Когда заголовок HTTP Host может быть неопределенным? - PullRequest
9 голосов
/ 14 мая 2011

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

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

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

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

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

Ответы [ 2 ]

13 голосов
/ 14 мая 2011

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

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

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

6 голосов
/ 18 декабря 2012

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...