HTTP响应标头被覆盖。哪里可以在apache中设置所有HTTP响应标头?

Shilpam

我有一个PHP应用程序,可以在其中有条件地设置Access-Control-Allow-Origin标头。我看到更改反映在我的本地设置和开发环境中,但是在实际站点上,标头设置为其他内容。我与之一起设置的其他标头保留其值,因此使我相信Access-Control-Allow-Origin标头在其他地方被覆盖。

我已经检查了项目中的.htaccess文件和apache虚拟主机配置文件,以了解可能会覆盖标头的位置。它是在虚拟主机配置文件中设置的,但是我将其注释掉并重新启动了apache,但是标题仍然被覆盖。

还有其他地方可以检查标题是否被覆盖吗?

在此先感谢您的帮助!

这是请求的PHP代码段:

    $origin=$front->getRequest()->getHeader('Origin');
    if($origin && (preg_match('/http[s]{0,1}:\/\/' . $front->getRequest()->getHttpHost() . '$/', $origin))){
        $front->getResponse()->setHeader('Access-Control-Allow-Origin', $origin);
        $front->getResponse()->setHeader('Access-Control-Allow-Credentials', 'true');
    }else{
        //leave current value if there is no match
        $front->getResponse()->setHeader('Access-Control-Allow-Origin', '*');
    }

我很确定报头会被其他内容覆盖,因为我可以Access-Control-Allow-Credentials:true按预期看到通过,但是Access-Control-Allow-Origin值为*

Shilpam

我做了一些进一步的挖掘,发现链接在.htaccess中也执行相同的操作。我最终添加了以下内容:

SetEnvIf Origin "^http(s)?://(.+\.)?(www.example.com)$" origin_is=$0
Header set Access-Control-Allow-Origin %{origin_is}e env=origin_is
Header set Access-Control-Allow-Credentials true env=origin_is

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章