Intereting Posts
Как использовать хранение и использование переменных сеанса на разных страницах? Сравнение хэша BCrypt между PHP и NodeJS PHP-эквивалент javascript >>> shift right с нулевыми заполняющими побитовыми операторами? Восстановить массив из квартиры (где дочерние массивы хранят индекс родительского массива) в многомерном? Тернарные операторы. Возможно одностороннее действие? Получить первый элемент массива Загрузка пользовательских классов в CodeIgniter? PHP exec в Windows с конфигурацией IIS Примечание. Неопределенный индекс: HTTP_REFERER Как проверить, содержится ли слово в другой строке с помощью PHP? Каковы правильные разрешения для папки для загрузки с PHP / Apache? Можно ли заставить glob () PHP искать файлы в нечувствительном к регистру образом? Изображение автоматически поворачивается при загрузке Как присвоить значение переменной PHP переменной Javascript? Загрузка нескольких изображений с помощью CodeIgniter

Когда заголовок HTTP Host не определен?

Согласно RFC 2616 , который определяет HTTP / 1.1, заголовок Host: является обязательным.

Клиент ДОЛЖЕН включать поле заголовка хоста во всех сообщениях запроса HTTP / 1.1.

Но руководство по PHP подразумевает, что оно может быть пустым:

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

В каких ситуациях этот заголовок и, следовательно, $_SERVER['HTTP_HOST'] , будут пустыми? Могло ли мое приложение зависеть от его присутствия?

Solutions Collecting From Web of "Когда заголовок HTTP Host не определен?"

Он может быть пустым в HTTP 1.0. Если не указано ни одного заголовка хоста, виртуальный хостинг не будет работать вообще, поэтому будет использоваться vhost по умолчанию на вашем веб-сервере.

Я просто испытал это сам; в PHP под Nginx переменная $_SERVER['HTTP_HOST'] получила имя виртуального хоста, которое в моем случае. Но это также зависит от вашей конфигурации fastcgi_params в Nginx.

На общем хостинге это не важно, поскольку по умолчанию для vhost будет выбрана некоторая информационная страница от хостинговой компании, поэтому ваш сценарий не будет запущен. Однако хорошо бы иметь в виду ваш собственный сервер.

Сканеры (например, google), скребки или даже совершенно законные скрипты, взаимодействующие с вашим API, могут случайно или неосведомленно пропускать заголовок Host.

Я добавил этот ответ, потому что этот вопрос возник на Google, когда я искал то же самое.