2014-01-21 72 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匹配的正則表達式