You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache升级后带下划线的请求头无法识别如何配置解决

下划线请求头无法识别问题解决方案

根因说明

Apache默认会丢弃名称含下划线的HTTP请求头,目的是规避CGI规范下中划线、下划线均被映射为下划线导致的头名称冲突,你升级后配置被重置才触发了该问题。

方案1:修改Apache配置(推荐,无需改动业务代码)

  • 找到Apache主配置文件:
    • RHEL/CentOS/Fedora 路径一般为 /etc/httpd/conf/httpd.conf
    • Debian/Ubuntu 路径一般为 /etc/apache2/apache2.conf
  • 在配置文件中添加如下参数:
    HttpProtocolOptions AllowUnderscoresInHeaders
    
  • 若你使用FastCGI模式运行PHP(新版Apache默认模式),需额外添加配置允许CGI层传递下划线头:
    SetEnvIfNoCase ^(.+)$ "HTTP_$1" passreqheaders=$1
    
  • 重启Apache服务生效:
    • RHEL/CentOS/Fedora 执行:systemctl restart httpd
    • Debian/Ubuntu 执行:systemctl restart apache2

方案2:无Apache配置权限时的兼容方案

如果无法修改Apache配置,将业务请求中的下划线头替换为中划线(-)即可正常被Apache接收,PHP侧获取到头后再将中划线替换回下划线即可,业务逻辑几乎无需修改。

配置验证

在PHP中执行如下代码即可验证配置是否生效:

var_dump(getallheaders()['你的自定义_下划线请求头名']);

正常输出头的对应值即为配置成功。

内容的提问来源于stack exchange,提问作者naspy971

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 11:48:03