Apache中重命名HTTP请求头报错:Authorization头配置问题求助
解决Apache中请求头重命名的语法错误问题
你的问题出在RequestHeader指令的变量引用语法上,Apache 2.4版本中引用请求头对应的环境变量时,需要添加e格式后缀。
正确配置写法
将你的配置修改为:
RequestHeader set Authorization "%{HTTP:CustomAuthorization}e"
错误原因解释
你原来的配置%{HTTP:CustomAuthorization}缺少了e后缀,Apache无法识别这种格式,因此抛出Unrecognized header format %的语法错误。在Apache 2.4的mod_headers模块中,%{VARNAME}e是引用环境变量(包括请求头对应的HTTP_*变量)的标准语法,其中HTTP:CustomAuthorization是请求头CustomAuthorization的等效环境变量写法。
可选优化:仅当目标头不存在时设置
如果你希望仅在Authorization头原本不存在的情况下,才用CustomAuthorization的值填充它,可以使用setifempty指令:
RequestHeader setifempty Authorization "%{HTTP:CustomAuthorization}e"
或者通过表达式控制,仅当CustomAuthorization存在时才设置:
RequestHeader set Authorization "%{HTTP:CustomAuthorization}e" expr=%{HTTP:CustomAuthorization}
修改完成后,执行apachectl configtest应该能通过语法校验,重启Apache服务即可生效。
内容的提问来源于stack exchange,提问作者Elliott B
相关产品推荐
相关产品推荐

