HTTP_HOST和SERVER_NAME在PHP中的区别是什么?正确使用方法
大家好!我是PHP新手,正在尝试理解服务器变量。我经常在其他开发者的代码中看到使用 `$_SERVER['HTTP_HOST']` 和 `$_SERVER['SERVER_NAME']`。乍一看,它们都返回主机名,但我注意到有时它们会输出不同的值。
例如,我有一个简单的脚本:
```php
';
echo 'SERVER_NAME: ' . $_SERVER['SERVER_NAME'] . '
'; ?> ``` 在本地服务器(OpenServer)上,两者都显示 `localhost`。但当我把网站上传到主机时,我注意到通过IP地址访问时,`HTTP_HOST` 显示IP,而 `SERVER_NAME` 显示域名。另外,我听说 `HTTP_HOST` 可以通过HTTP请求头伪造,这会造成安全漏洞。 请告诉我: 1. 这些变量之间的根本区别是什么? 2. 在重定向、生成链接和验证域名时,使用哪一个更安全? 3. 是否存在它们可能截然不同的情况?
'; ?> ``` 在本地服务器(OpenServer)上,两者都显示 `localhost`。但当我把网站上传到主机时,我注意到通过IP地址访问时,`HTTP_HOST` 显示IP,而 `SERVER_NAME` 显示域名。另外,我听说 `HTTP_HOST` 可以通过HTTP请求头伪造,这会造成安全漏洞。 请告诉我: 1. 这些变量之间的根本区别是什么? 2. 在重定向、生成链接和验证域名时,使用哪一个更安全? 3. 是否存在它们可能截然不同的情况?