Ajax 在Apache localhost中未接收带有请求头的X_请求的_

Ajax 在Apache localhost中未接收带有请求头的X_请求的_,ajax,apache,http-headers,xmlhttprequest,localhost,Ajax,Apache,Http Headers,Xmlhttprequest,Localhost,我刚刚在Windows7桌面上安装了Apache2.432位,正在测试一个简单的AJAX网站。我有一个.htaccess文件,它将所有非资源文件请求定向到index.php,在这个.php脚本中,我检查$\u服务器[“HTTP\u X\u REQUESTED\u WITH”],以确定给定的请求是否是ajax(我在发送ajax请求时自己设置了这个头) 虽然标题已经设置好了,但Apache似乎在我的.php脚本运行之前就删除了它。我可以在Chrome中看到请求头,但它不在.php脚本中。我甚至尝试在

我刚刚在Windows7桌面上安装了Apache2.432位,正在测试一个简单的AJAX网站。我有一个.htaccess文件,它将所有非资源文件请求定向到index.php,在这个.php脚本中,我检查
$\u服务器[“HTTP\u X\u REQUESTED\u WITH”]
,以确定给定的请求是否是ajax(我在发送ajax请求时自己设置了这个头)

虽然标题已经设置好了,但Apache似乎在我的.php脚本运行之前就删除了它。我可以在Chrome中看到请求头,但它不在.php脚本中。我甚至尝试在Apache的access.log中记录
\“%{X\u请求的\u与}I\”
,但在那里我也看不到它


当站点在Bluehost上运行时,此功能起作用。我是否需要配置Apache以使其在本地计算机上工作?

出于“安全”原因,Apache 2.4现在会删除所有带下划线的标题

根据他们的文档,您可以将其添加到您的htaccess:

SetEnvIfNoCase ^Accept.Encoding$ ^(.*)$ fix_accept_encoding=$1
RequestHeader set Accept-Encoding %{fix_accept_encoding}e env=fix_accept_encoding

其中,Accept.Encoding和Accept Encoding是标头名称。下划线分别替换为点和连字符。

谢谢您的帮助,利亚姆。为了清楚起见,下面是我添加到.htaccess文件中的内容。您还必须确保启用了mod_setenif和mod_headers模块
SetEnvIfNoCase^X.REQUESTED.WITH$^(.*)$fix\u accept\u encoding=$1 RequestHeader set X-REQUESTED-WITH%{fix\u accept\u encoding}e env=fix\u accept\u encoding