apache httpd - 标头合并忽略现有标头

时间:2015-05-18 08:53:48

标签: apache http-headers access-control mod-proxy

使用apache mod_proxy 2.5我正在尝试在proxypass位置中使用mod_headers合并或替换现有的access-control-allow-origin标头。 从代理后端返回的答案已经包含了一个我想要合并或替换的access-control-allow-origin标头

Header always merge Access-Control-Allow-Origin  "*" 
Header always set Access-Control-Allow-Methods "OPTIONS, GET" 
Header always set Access-Control-Max-Age "1000" 
Header always set Access-Control-Allow-Headers "x-requested-with, Content-Type, origin, authorization, accept, client-security-token, x-smp-appcid"

这导致标题重复,这会在所有浏览器中引发错误,因为此标头只能出现一次。

同样是Header始终设置,尽管这应该替换现有的标头。

我还尝试使用if模块首先检查标题是否发生,并且仅在未设置时设置。但是在某种程度上难以查看响应标头。

感谢任何帮助

1 个答案:

答案 0 :(得分:0)

我通过仅在其预检请求时设置Access-Control-Allow-Origin和Access-Control-Allow-Credentials标头来解决同样的问题

由代理后端(已发送所需标头)处理的第二个请求(POST,DELETE,PUT等)预检请求,因此不会再次设置标头通过Apache规则。

要检查预检请求,您可以检查请求是否包含:

  1. REQUEST_METHOD == OPTIONS
  2. 访问控制请求方法! - =""
  3. Origin!=""
  4. 希望这有帮助。