簡體   English   中英

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

[英]$_SERVER['HTTP_HOST'] contains port number too =/

我不知道也許這是一個錯誤。

我的服務器上有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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM