Как сделать так, чтобы заголовок «host» включался в http-запрос браузера - PullRequest
0 голосов
/ 26 октября 2018

Я не понимаю, как мы можем заставить браузер включать заголовок host при вводе URL? Исходя из моих наблюдений, при посещении какого-либо URL, заголовок host будет включен, а некоторые нет.

Пример посещения стека переполнения, как показано ниже:

enter image description here

Я не понимаю, как мы можем контролировать его поведение, чтобы включить host имя? Если у меня несколько поддоменов, использующих один и тот же IP-адрес, невозможно определить, какое приложение я хочу посетить.

1 Ответ

0 голосов
/ 26 октября 2018

Stackoverflow использует HTTP / 2, в котором вместо host используется заголовок : Authority .Если вы прокрутите вверх с правой стороны, вы увидите его.

Headers for stackoverflow.com

См. RFC7540 для получения дополнительной информации:

"Чтобы гарантировать, что строка запроса HTTP / 1.1 может быть точно воспроизведена, это поле псевдозаголовка ДОЛЖНО быть опущено при трансляции из запроса HTTP / 1.1, который имеет цель запроса в источнике или в форме звездочки. Клиенты, которые генерируютЗапросы HTTP / 2 напрямую ДОЛЖНЫ использовать поле псевдо-заголовка ": author" вместо поля заголовка хоста. Посредник, который преобразует запрос HTTP / 2 в HTTP / 1.1, ДОЛЖЕН создать поле заголовка хоста, если оно не присутствует в запросе.скопировав значение поля псевдозаголовка ": author". "

Если у меня несколько поддоменов, использующих один и тот же IP-адрес, невозможно определить, какое приложение я хочу посетить.

Stackoverflow также использует HTTPS.Веб-серверы могут маршрутизировать к правильному домену на основе расширения SNI, передаваемого при квитировании TLS.

https://www.globalsign.com/en/blog/what-is-server-name-indication/

"На сайте HTTP сервер использует заголовки HTTP HOST дляопределите, какой веб-сайт HTTP должен быть представлен. Однако при использовании TLS (протокола, лежащего в основе HTTPS) необходимо создать защищенный сеанс, прежде чем можно будет установить сеанс HTTP, и до этого заголовок узла недоступен.

...

Индикация имени сервера (SNI) является расширением протокола TLS. Клиент указывает, к какому имени хоста он хочет подключиться, используя расширение SNI врукопожатие TLS. Это позволяет серверу (например, Apache, Nginx или балансировщику нагрузки, такому как HAProxy) выбрать соответствующий закрытый ключ и цепочку сертификатов, которые необходимы для установления соединения из списка или базы данных, в то время как все сертификаты размещаются на сервере.один IP-адрес. "

...