2014-01-21 73 views
6

我正在使用Apache服务器,并且希望有条件地添加头文件。有条件地设置Apache头文件

如果URI匹配某个正则表达式,我想添加标头Access-Control-Allow-Origin: *。什么是这样做的好方法?

我试过到目前为止:

  1. 我加入由请求处理程序调用代码,使用apr_table_add(rq->headers_out, "Access-Control-Allow-Origin", "*")。但是,似乎Apache在发送响应之前剥去头部,只要头部Content-Type: application/x-javascript也被设置。这是做错了吗?为什么Apache会去掉头文件?

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

+0

你是怎么解决这个问题,你说,你得到的帮助有些同事?请你可以发布@akond作品的答案或答案吗? – Robert

+0

@akond的答案工作。 – dinosaur

回答

11
SetEnvIf Request_URI somepartofurl SIGN 
Header always add "Access-Control-Allow-Origin" "*" env=SIGN 

,但只有当位于配置这个工程。将它放到.htaccess中将无济于事。

+0

你能解释一下这段代码在做什么(语法,它是如何工作的)?当你说“位于配置中”时,你的意思是在httpd.conf中吗?我不认为我的模块有一个。我将如何设置它? – dinosaur

+0

在同事的帮助下找到了答案。谢谢! – dinosaur

+0

SetEnvIf和Header指令不仅限于位于配置文件中,它们在目录上下文中完美工作,也在.htaccess文件中工作。与接受的答案中所陈述的相反。 – biera

1

这也应该工作(需要mod_rewrite的):

RewriteRule ^/en/foo.*$ - [ENV=SET_ACAO:true] 
Header set "Access-Control-Allow-Origin" "*" env=SET_ACAO 

其中^/en/foo.*$这是对请求的URL匹配的正则表达式