Всегда ли определена переменная сервера HTTP_HOST?

Всегда ли определена переменная сервера HTTP_HOST для всех серверов или, например, в IIS с другим именем или даже не определена вообще?

Кроме того, это значение всегда определено? Или какой-то хост они не определяют эту ценность? Есть ли другой способ получить это значение?

Solutions Collecting From Web of "Всегда ли определена переменная сервера HTTP_HOST?"

Указание руководства

HTTP_HOST

  Содержимое заголовка Host: из текущего запроса, если таковой имеется. 

HTTP_HOST является частью HTTP-запроса клиента и указывает, на какое имя хоста должен быть направлен запрос. если HTTP_HOST не установлен, клиент либо очень, очень старый (HTTP 1.0 не поддерживает HTTP_HOST), либо сделал запрос непосредственно на IP-адрес вашего веб-сайта.

Я думаю, что HTTP-заголовок Host является обязательным, поскольку HTTP 1.1

HTTP_HOST не определяется сервером, это

Содержимое заголовка Host: из текущего запроса, если таковой имеется.

Это зависит от того, содержит ли информация заголовка вашего запроса Host .

Это не всегда определяется.

Как указано выше, он определяется только в том случае, если есть HTTP-запрос. Если вы используете php-скрипт из CLI (например, php filename.php), ключ HTTP_HOST не будет установлен.

Кроме того, вы должны заметить, что HTTP_HOST определяется клиентом, поэтому его довольно легко подделать, и он не является надежным. Вы должны скорее полагаться на что-то вроде SERVER_NAME .

Если вы используете PHP> = 5.3.0, то вы должны использовать

 gethostname(); 

Вы можете проверить здесь документацию.

Если вы используете PHP> = 4.2.0 и PHP <5.3.0, тогда

 php_uname('n'); 

будет выполнять ту же работу.