有沒有辦法在Apache配置中讀取請求標頭的值?我想避免進入.htaccess文件,如果我可以避免使用SetEnvIf,則更好。 我試圖在這裏實施建議:https://stackoverflow.com/a/1850482/138228Apache配置讀取標頭值
我不能在使用正則表達式之外找到有關此主題的很多內容。我正在尋找的是這樣的:
頁眉設置NAME =%{} value_of_different_header%
有沒有辦法在Apache配置中讀取請求標頭的值?我想避免進入.htaccess文件,如果我可以避免使用SetEnvIf,則更好。 我試圖在這裏實施建議:https://stackoverflow.com/a/1850482/138228Apache配置讀取標頭值
我不能在使用正則表達式之外找到有關此主題的很多內容。我正在尋找的是這樣的:
頁眉設置NAME =%{} value_of_different_header%
看來解決辦法是:
SetEnvIf Origin "http(s)?://(domaine1\.com|domain2\.com)$" AccessControlAllowOrigin=$0
Header always set Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
但是這與.htaccess無關,您可以將這些行放在常規的apache配置文件(虛擬主機?)中,而不使用不好 .htaccess動態配置文件。
頁眉指令的值部分是:
值可以是一個字符串,字符串包含格式說明或兩者
的組合,但唯一可用的格式說明是%%
(針對%
),針對時間戳的%t
,針對環境變量的%D
(同上),%{foo}e
和%{foo}s
。
SetenvIf
是一個很好的apache工具來讀取請求標題,在這裏閱讀Origin標題。然後,使用環境變量是在Apache中編寫複雜事物的經典方式(我的意思是存儲某種變量的方式)。
所以我不知道你爲什麼想要另一種解決方案。
如果沒有SetEnvIf,我找不到這樣做,除了複製不同的頭文件可以用下面的方法完成,我是這樣做的ReverseProxy的一部分(因此使用RequestHeader而不是Header),但是兩者似乎是可以互換的
###This reads the value of OldHeader into TempValue
SetEnvIf OldHeader ".+" TempValue=$0
###This will overwrite the value of "NewHeader" if it was already set
RequestHeader set NewHeader %{TempValue}e env=TempValue
###Optionally remove the original
RequestHeader unset OldHeader