有条件地设置Apache标头

din*_*aur 11 apache http-headers cors mod-headers

我正在使用apache服务器,我想有条件地添加标头.

如果URI匹配某个正则表达式,我想添加标题Access-Control-Allow-Origin: *.有什么好办法呢?

到目前为止我尝试过的:

  1. 我添加了请求处理程序调用的代码,使用apr_table_add(rq->headers_out, "Access-Control-Allow-Origin", "*").但是,每当标头Content-Type: application/x-javascript也被设置时,似乎Apache在发送响应之前剥离了标头.这是错误的方法吗?为什么Apache会删除标题?

  2. 我听说mod_headers建议了.mod_headers是否能够根据与请求URI匹配的正则表达式放置标头?

ako*_*ond 15

SetEnvIf Request_URI somepartofurl SIGN
Header always add "Access-Control-Allow-Origin" "*" env=SIGN
Run Code Online (Sandbox Code Playgroud)

但这仅适用于配置中的情况.将它放入.htaccess将无济于事.

  • SetEnvIf 和 Header 指令不仅限于位于配置文件中,它们在目录上下文以及 .htaccess 文件中也可以完美工作。与已接受的答案中所述相反。 (3认同)

Tom*_*ski 9

这也应该有效(需要mod_rewrite):

RewriteRule ^/en/foo.*$ - [ENV=SET_ACAO:true]
Header set "Access-Control-Allow-Origin" "*" env=SET_ACAO
Run Code Online (Sandbox Code Playgroud)

其中^/en/foo.*$正则表达式与请求URL匹配