我有一个在 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
的值RequestHeader set
支持表达式,表达式包括req
(或http
) 函数,它为您提供请求标头的值。因此,这个指令应该可以满足您的要求:
RequestHeader set X-CAS-email-primary "expr=%{req:X-CAS-email_primary}"
你必须深入挖掘文档找到这种东西,但它就在那里。
不确定为什么你的配置不起作用,但我猜 SetEnvIfNoCase 是在 RequestHeader 之后评估的。文档并不容易弄清楚这一点。