Apache-2.4
標頭中的 Apache 下劃線被覆蓋
我有一個設置標題 x-user_type 的服務。由於 Apache2.4.33 無法使用它,我將在 .htaccess 中使用以下內容對其進行轉換:
<IfModule mod_headers.c> <IfModule mod_setenvif.c> SetEnvIfNoCase ^x.user.type$ ^(.*)$ fix_x-user_type=$1 RequestHeader set x-user-type %{fix_x-user_type}e env=fix_x-user_type </IfModule> </IfModule>
但是,如果我在請求中提供 x-user-type,則響應中 x-user-type 的值將被覆蓋
例子:
- 未提供任何內容 -> x-user-type = application(這是由服務設置的)
- x-user_type = test -> x-user-type = application (這沒關係,因為它是由服務設置的)
- x-user-type = test -> x-user-type = test (這也應該是應用程序)
我認為這是一個 apache 配置問題。有人可以幫我解決這個問題嗎?
修復了我自己的問題:https ://serverfault.com/a/900745/490242
引用:
a 的值
RequestHeader set
支持表達式,並且表達式包括req
(或 http)函式,它為您提供請求標頭的值。所以這個指令應該做你想做的事:
RequestHeader set X-CAS-email-primary "expr=%{req:X-CAS-email_primary}"
您必須深入研究文件才能找到這種東西,但它就在那裡。不知道為什麼您的配置不起作用,但我猜 SetEnvIfNoCase 是在 RequestHeader 之後評估的。文件不容易弄清楚。
好像
SetEnvIfNoCase
也是我的問題。