
我有一個在 Apache 2.4.27 後面運行的應用程序,它使用 mod_auth_cas 對用戶進行身份驗證。此模組在標頭中儲存有關經過身份驗證的使用者的屬性。我遇到了一個被刪除的標頭的問題,因為它包含一個下劃線 ( X-CAS-email_primary
)。經過一番搜尋後,我將下面的程式碼片段加入 VirtualHost 設定中。
SetEnvIfNoCase X-CAS-email_primary ^(.*)$ fix_header=$1
RequestHeader set X-CAS-email-primary %{fix_header}e env=fix_header
如果它不明顯,我正在嘗試更改X-CAS-email_primary
為X-CAS-email-primary
.該代碼部分有效。新標頭確實出現,但沒有任何價值。
["HTTP_X_CAS_EMAIL_PRIMARY"]=> string(0) ""
我已經確認X-CAS-email_primary
已設置,所以我不太確定發生了什麼。有什麼建議麼?
謝謝!
答案1
a 的值RequestHeader set
支援表達式,表達式包含req
(或http
) 函數,它為您提供請求標頭的值。所以這個指令應該要做你想要的:
RequestHeader set X-CAS-email-primary "expr=%{req:X-CAS-email_primary}"
你必須深入挖掘文件找到這種東西,但它就在那裡。
不確定為什麼您的配置不起作用,但我猜 SetEnvIfNoCase 是在 RequestHeader 之後評估的。這些文件並不容易弄清楚這一點。