$ _SERVER ['HTTP_HOST']也包含端口号= /

我不知道也许这是一个错误。 我的服务器上有2个虚拟主机。 virtualhost1.com virtualhost2.com 如果我用端口80打开virtualhost1.com(virtualhost1.com:80)
$_SERVER['HTTP_HOST']='virtualhost1.com';
但如果我打开virtualhost2.com:80
$_SERVER['HTTP_HOST']='virtualhost2.com:80'; // NOTE: with port number
我能知道为什么吗?     
已邀请:
$_SERVER['HTTP_HOST']
的值直接取自
Host:
HTTP请求标头。请求客户似乎以这种方式填写它。 我建议使用
$_SERVER['SERVER_NAME']
,因为它的值将从您的虚拟主机配置中设置。但是,正如Flimm在下面指出的那样,即使
SERVER_NAME
的可靠性仍然可以依赖于服务器配置(请查看此答案以获取更多信息)。     
以下函数总是返回没有端口的真实主机(用户类型主机),它几乎可靠:
function getRealHost(){
   list($realHost,)=explode(':',$_SERVER['HTTP_HOST']);
   return $realHost;
}
    

要回复问题请先登录注册