是否始终为所有服务器定义服务器变量HTTP_HOST
,或者例如在IIS中定义了其他名称,甚至根本没有定义?
此外,该值始终定义?或者某些主持人他们没有定义这个价值?有没有其他方法来检索该值?
答案 0 :(得分:7)
引用手册
HTTP_HOST是
Contents of the Host: header from the current request, if there is one.
HTTP_HOST是客户端HTTP请求的一部分,它指定请求将指向哪个主机名。如果未设置HTTP_HOST,则客户端要么非常非常老(HTTP 1.0不支持HTTP_HOST),要么直接向您的网站IP发出请求。
我认为自HTTP 1.1以来,主机HTTP标头是必需的
答案 1 :(得分:2)
HTTP_HOST
未由服务器定义,它是
主机的内容:来自当前请求的标头(如果有) 之一。
因此,这取决于您的请求的标头信息是否包含Host
。
答案 2 :(得分:0)
并不总是定义。
如上所述,仅在存在http请求时才定义。如果您从CLI运行php脚本(例如php filename.php),则不会设置HTTP_HOST
密钥。
此外,您应该注意HTTP_HOST
是由客户端定义的,因此伪造它很容易,而且不可靠。你应该依赖SERVER_NAME
之类的东西。
如果您使用的是PHP> = 5.3.0,则应使用
gethostname();
您可以查看here以获取相关文档。
如果您使用的是PHP> = 4.2.0& PHP< 5.3.0然后
php_uname('n');
将做同样的工作。