【发布时间】:2013-08-13 16:02:54
【问题描述】:
升级到 php 5.5.1 和 apache 2.4.6 后,检查某些标头现在已损坏(特别是检查 HTTP_X_REQUESTED_WITH)。
通过进一步的测试,我注意到任何包含下划线的自定义标头都会被忽略(我的意思是它不会出现在 PHP 的 $_SERVER 数组中)。因此,如果我添加一个名为my-header 的标头,它会以$_SERVER['HTTP_MY_HEADER'] 的形式提供,但如果我尝试添加一个标头my_header,它在$_SERVER 中将不可用。
【问题讨论】:
-
由于你使用的是Apache,所以你在使用
apache_request_headers时得到正确的headers -
@FDL 是的,我确实使用 apache_request_headers 获得了正确的标头
-
应该在发布之前进行研究...这是 apache 2.4 中记录的功能:“将标头转换为环境变量比以前更严格,以通过以下方式减轻一些可能的跨站点脚本攻击标头注入。包含无效字符(包括下划线)的标头现在被静默删除。 - httpd.apache.org/docs/trunk/new_features_2_4.html
-
很好的发现,您应该将其添加为答案并接受它,以便其他人将来可以从中受益。
标签: php apache http-headers