您的位置:首页 > 理论基础 > 计算机网络

$_SERVER['HTTP_HOST']与$_SERVER['SERVER_NAME']区别

2017-11-10 11:22 239 查看
当满足以下三个条件时,两者会输出相同信息。
1. 服务器为80端口
2. apache的conf中ServerName设置正确
3. HTTP/1.1协议规范

不同点:

1. 通常情况:

_SERVER[“HTTP_HOST”] 在HTTP/1.1协议规范下,会根据客户端的HTTP请求输出信息。

_SERVER[“SERVER_NAME”] 默认情况下直接输出apache的配置文件httpd.conf中的ServerName值。

2. 当服务器为非80端口时:

_SERVER[“HTTP_HOST”] 会输出端口号,例如:mimiz.cn:8080

_SERVER[“SERVER_NAME”] 会直接输出ServerName值

因此在这种情况下,可以理解为:HTTP_HOST = SERVER_NAME : SERVER_PORT

3. 当配置文件httpd.conf中的ServerName与HTTP/1.0请求的域名不一致时:

httpd.conf配置如下:

<virtualhost *>

ServerName mimiz.cn

ServerAlias www.mimiz.cn

</virtualhost>

客户端访问域名www.mimiz.cn

_SERVER[“HTTP_HOST”] 输出 www.mimiz.cn

_SERVER[“SERVER_NAME”] 输出 mimiz.cn

所以,在实际程序中,应尽量使用_SERVER[“HTTP_HOST”] ,比较保险和可靠。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: