开发者

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

开发者 https://www.devze.com 2023-02-01 04:32 出处:网络
I don\'t know maybe it\'s a bug. I have 2 virutalhosts on my server. virtualhost1.com virtualhost2.com if i open virtualhost1开发者_StackOverflow社区.com with port 80 (virtualhost1.com:80)

I don't know maybe it's a bug.

I have 2 virutalhosts on my server.

virtualhost1.com virtualhost2.com

if i open virtualhost1开发者_StackOverflow社区.com with port 80 (virtualhost1.com:80)

$_SERVER['HTTP_HOST']='virtualhost1.com';

but if i open virtualhost2.com:80

$_SERVER['HTTP_HOST']='virtualhost2.com:80'; // NOTE: with port number

Can I know why?


The value of $_SERVER['HTTP_HOST'] is taken directly from the Host: HTTP request header. It appears the requesting client is filling it in that way.

I suggest using $_SERVER['SERVER_NAME'] instead as its value will be set from your virtual host config. However, as Flimm notes below, even the reliability of SERVER_NAME can still be dependent on server config (check out this answer for more info on that).


Following function always return real host (user typed host) without port and it's almost reliable:

function getRealHost(){
   list($realHost,)=explode(':',$_SERVER['HTTP_HOST']);
   return $realHost;
}
0

精彩评论

暂无评论...
验证码 换一张
取 消