Intereting Posts
Каков правильный способ подсчета комментариев, хитов и комментариев к статье в индексе статей? Эффективный алгоритм для поиска всех «символьно-равных» строк? Объекта дизайна отчета нет. В веб-обозревателе BIRT php glob number range в имени файла Ошибка воспроизведения демонстрации «Вы не можете определить элемент последовательности, когда в картировании» Сессия Laravel отсутствует после обновления страницы Остановите скрипт (без фатальной ошибки) после определенного количества времени запроса / разбора Адрес в почтовом ящике не соответствует RFC 2822, 3.6.2. когда электронная почта находится в переменной jQuery.post (), PHP и перенаправления Как получить список общих друзей на Facebook с помощью их API? Строгая стандартная ошибка php Laravel не запоминает переменные класса (Pathinfo vs fnmatch part 2) Тест скорости, измененный на Windows и Mac Кодовая кодировка CodeIgniter и поддержка UTF-8 Синхронизация PHP exec

Насколько надежным является HTTP_HOST?

Я написал скрипт PHP, который хотел бы использовать на нескольких доменах на одном сервере (указывая на тот же скрипт). Я хочу добавить функциональность в скрипт, чтобы я мог узнать, с каким доменом работает скрипт в любой момент. HTTP_HOST можно использовать для поиска домена, однако я прочитал, что он не является надежным, особенно в старых браузерах. Я понимаю, что большинство серверов Apache используют виртуальные хосты, которые все равно используют один и тот же метод, поэтому, если это не проблема с хостинг-провайдерами, это не должно быть проблемой для моего кода.

Может ли кто-нибудь подтвердить это и устранить путаницу?

HTTP_HOST предназначен для заголовка Host: отправленного пользовательскими агентами HTTP 1.1 во время запроса. Это не используется клиентом HTTP 1.0, поэтому он не появится. Однако, в настоящее время, я не думаю, что все еще есть много клиентов HTTP 1.0.

Изменить : я стою исправлено: заголовок HOST отсутствует в запросах HTTP 1.0. См. Ответ @ Bruno. Оставляя мое место на месте из соображений безопасности

Единственные проблемы с HTTP_HOST, о которых я знаю, – это проблемы безопасности, а не совместимость.

Проблемы безопасности связаны с тем, что HTTP_HOST отправляется пользователем. Если веб-сервер некорректно настроен и / или неисправен, произвольные значения HTTP_HOST могут сделать его на ваш сайт / скрипт (см., Например, здесь для подробного обсуждения). Ваша заявка должна быть подготовлена ​​для этого.

Хорошо никогда не доверять HTTP_HOST (например, может быть хорошей идеей настроить для него массив допустимых значений перед его обработкой в ​​вашем скрипте PHP):

 <?php $allowed_hosts = array("domain1.com", "domain2.com", "domain3.com"); if (!in_array(strtolower($_SERVER["HTTP_HOST"]), $allowed_hosts)) die ("Unknown host name ". $_SERVER["HTTP_HOST"]); 

Ответ Pekka кажется более интересным, но кажется, что вы хотите знать, какие браузеры поддерживают http 1.1, а какие нет. Обнаружено это на google: http://www.1-script.com/forums/Browser-Support-for-HTTP-1-1-article34982–8.htm

Обратите внимание, что из этого потока: «браузер HTTP 1.0 не может попасть на виртуальный хост не по умолчанию». Это означает, что браузер, который не поддерживает http 1.1, не может достичь какого-либо веб-сайта на общем сервере, насколько я знаю. Thare – это количество сайтов на общих хостах. Кроме того, субдомены могут (хотя и не обязательно) быть «обнаружены» одинаково, используя HTTP_HOST var.

После прочтения этих данных, я действительно не думаю, что кто-то использует браузер, который был старым сегодня, было бы невозможно, чтобы они фактически перемещались по сети 🙂

Вот что я ответил по аналогичному вопросу :


Рассматривая это сам для других целей:

«HTTP / 1.0 используется прокси-серверами, некоторыми мобильными клиентами и IE, когда он настроен на использование прокси-сервера. Таким образом, по-прежнему 1.0 по-прежнему учитывает нетривиальный% трафика в Интернете в целом … Да, есть много 1,0 клиентов все еще там ».

Источник (июль 2009 г.): http://groups.google.com/group/erlang-programming/msg/08f6b72d5156ef74

🙁


Я лично получаю довольно много HTTP / 1.0 запросов на своих сайтах с отсутствующим HTTP_HOST 🙁