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

$_SERVER键中出现重复HTTP_前缀的原因排查

AJAX自定义请求头出现重复HTTP_前缀的排查分析

我通过jQuery AJAX向服务器发送请求,设置的请求头如下:

headers: {
  'X-FOO': 'x_foo',
  'X-BAR': $( 'input[name=x_bar]' ).val(),
}

在服务器端的$_SERVER全局变量中,大部分请求头都正常解析,但唯独X-BAR头被添加了重复的HTTP_前缀,相关内容如下:

...
[HTTP_ACCEPT_ENCODING] => gzip, deflate, br
[HTTP_ACCEPT_LANGUAGE] => en-GB,en;q=0.9
[HTTP_X_FOO] => x_foo
[HTTP_HTTP_X_BAR] => my_value
[HTTP_X_REQUESTED_WITH] => XMLHttpRequest
[HTTP_ACCEPT] => */*
...

当前环境为NGINX部署,无CMS等额外干扰,仅使用纯PHP/jQuery,且已100%确认AJAX请求头中未添加额外前缀。

可能的原因

  • NGINX请求头转发配置错误:这是最常见的诱因。如果NGINX配置里用proxy_set_header或fastcgi_param处理X-BAR头时逻辑出错,比如写了proxy_set_header HTTP_X-BAR $http_x_bar;,NGINX会在转发请求时给原本的X-BAR头再套一层HTTP_前缀,最终PHP接收到的键名就变成了HTTP_HTTP_X_BAR。
  • FastCGI参数配置异常:若PHP通过FastCGI与NGINX通信,部分FastCGI参数配置可能对特定请求头做了重复的格式转换,不过这种情况概率较低,优先排查NGINX的请求头转发规则。
  • 浏览器端工具篡改:虽然已确认AJAX代码,但可以通过浏览器开发者工具的Network面板,查看实际发送的请求头内容,确认是否在发送环节就出现了重复前缀,排除浏览器扩展或代理工具的干扰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 12:55:25