【发布时间】:2019-11-11 15:17:20
【问题描述】:
今天我偶然发现了一件非常奇怪的事情。 超变量 $_SERVER 的内容取决于浏览器。
我在 Chrome 和 Firefox 上调用了完全相同的请求,只是在 var_dump 中输出了 $_SERVER 变量。
无论出于何种原因,DOCUMENT_ROOT 都不相同,PHP_SELF 也不同。
Chrome 80 和 Opera 64:
["DOCUMENT_ROOT"]=>
string(15) "C:/xampp/htdocs"
["SCRIPT_NAME"]=>
string(23) "/dev/project123/root.php"
["PHP_SELF"]=>
string(23) "/dev/project123/root.php"
Firefox 70 & Internet Explorer 11 & Edge:
["DOCUMENT_ROOT"]=>
string(15) "C:/xampp/htdocs/dev/project123"
["SCRIPT_NAME"]=>
string(23) "/root.php"
["PHP_SELF"]=>
string(23) "/root.php"
有谁知道,为什么以及如何解决这个问题?这是服务器问题吗?
谢谢
【问题讨论】:
-
客户端如何支配服务器? O.o
-
很奇怪,不是吗?相同的 URL,相同的服务器,相同的脚本,但输出不同:S
-
我没有在我的开发盒上看到这种行为 - 我在 Chrome、Opera、Firefox(和开发人员版)和 Edge 中得到了相同的输出/IE11 ...正如预期的那样;你真的只是在测试脚本上做
var_dump($_SERVER)吗?没有其他的?DOCUMENT_ROOT的变化真的 看起来像不同的<VirtualHost>指令... -
单独的浏览器无法产生这样的差异。它必须是服务器端的东西。
标签: php google-chrome server webserver