Всегда ли определена переменная сервера HTTP_HOST
для всех серверов или, например, в IIS с другим именем или даже не определена вообще?
Кроме того, это значение всегда определено? Или какой-то хост они не определяют эту ценность? Есть ли другой способ получить это значение?
Указание руководства
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');
будет выполнять ту же работу.