PHP: $_SERVER 变量: $_SERVER['HTTP_HOST'] vs $_SERVER['SERVER_NAME']
2022-08-30 18:17:55
$_SERVER['SERVER_NAME']
给出主机配置中定义的服务器名称的值(即 Apache 的 Apache 文件)。.conf
$_SERVER['HTTP_HOST']
为您提供满足当前请求的域名,并且与请求更直接相关。
HTTP_HOST
在大多数应用程序中通常更有用,因为它与请求直接相关,而可以返回conf文件中的任何值,并且根本不会告诉您有关请求的任何信息。SERVER_NAME
我将举一个例子,说明与 .假设您在 Apache 中定义了一个主机,其服务器名称为 ,IP 地址为 。HTTP_HOST
SERVER_NAME
example.com
1.2.3.4
让我们看一下两个传入的请求 URL,并显示这些变量之间的差异:
http://www.example.com
HTTP_HOST = www.example.com
SERVER_NAME = example.com
http://1.2.3.4
HTTP_HOST = 1.2.3.4
SERVER_NAME = example.com
因此,HTTP_HOST更多地与请求相关联,而SERVER_NAME则由服务器配置决定。
HTTP_HOST
是客户端发送的标头。因此,它可能不太值得信赖。 由服务器的配置决定,而不考虑用户输入。Host:
SERVER_NAME
行为上的差异是微妙的。这里演示了一些很好的例子:http://shiflett.org/blog/2006/mar/server-name-versus-http-host
“SERVER_NAME”执行当前脚本所使用的服务器主机的名称。如果脚本在虚拟主机上运行,则这将是为该虚拟主机定义的值。
“HTTP_HOST”主机的内容:当前请求中的标头(如果有)。