所述
HTTP_HOST从得到的HTTP请求报头,这就是在客户端实际使用作为请求的“目标主机”。将
SERVER_NAME在服务器配置定义。使用哪种取决于您的需要。但是,您现在应该意识到,一个是客户机控制的值,因此对于在业务逻辑中使用可能是不可靠的,而另一个是服务器控制的值,该值更可靠。但是,您需要确保所讨论的Web服务器已
SERVER_NAME正确配置。以Apache
HTTPD为例,以下是其文档摘录:
如果未
ServerName指定,则服务器尝试通过对IP地址执行反向查找来推断主机名。如果没有在中指定端口ServerName,则服务器将使用传入请求中的端口。为了获得最佳的可靠性和可预测性,您应该使用ServerName指令指定一个明确的主机名和端口。
更新
在首先怀疑PHP并挖掘了有关该主题的一些PHP错误报告之后,我了解到问题的根源在于所使用的Web服务器,
Host当
SERVER_NAME请求时它错误地返回了HTTP标头。因此,我使用有关该主题的各种关键字来研究ApacheHTTPD错误报告,最后找到了一个相关的错误。此行为是从Apache
HTTPD
1.3开始引入的。你需要设置指令,在该进入中(同时检查在底部的警告文件。
UseCanonicalName``on``<VirtualHost>``ServerName``httpd.conf
<VirtualHost *> ServerName example.com UseCanonicalName on</VirtualHost>
这对我有用。
总而言之,
SERVER_NAME它更可靠,但是您 依赖 于服务器配置!



