Apache-2.4

標頭中的 Apache 下劃線被覆蓋

  • October 9, 2018

我有一個設置標題 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也是我的問題。

引用自:https://serverfault.com/questions/933628