Что такое «URL», который ограничивает заголовок Host?

Следующая цитата из HTTP The Definite Guide предполагает, что «URL» откуда-то исходит, и использует его для ограничения заголовка Host. Откуда "URL"? Это из первой строки HTTP-запроса (например, после GET ), из ввода веб-клиента (например, из аргумента curl ], или из ввода в адресной строке веб-браузера)? Спасибо.

Заголовок Host указывает хост в Интернете и номер порта для запрашиваемый ресурс, полученный из исходный URL :

 Host = "Host" ":" host [":" port]
 

В частности:

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

• Если URL содержит IP-адрес, заголовок Host должен содержать тот же адрес.

• Если URL содержит имя хоста, заголовок хоста должен содержать то же имя.

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

• Если URL содержит имя хоста, заголовок хоста не должен содержать другой псевдоним для этого имени хоста, потому что это также нарушит виртуально размещенные серверы.

0
задан 13 February 2019 в 03:30
1 ответ

Поле хоста было введено в стандарте HTTPv1.0 и было необязательным.

В HTTPv1.1 необходимо использовать поле Host.

До этого стандарта, в примере HTTPv0.9, браузер просто выдавал одну удаленную команду, например:

GET example.com/index.html[cr][lf][cr][lf]

[cr] [lf] - это возврат каретки, то есть двойной возврат каретки в строке.

Для лучшей поддержки SSL и по другим причинам в HTTPv1 добавлено поле Host.

В HTTPv1 + тот же запрос в браузере будет выглядеть так:

GET example.com/index.html[cr][lf]
Host: example.com[cr][lf]
[cr][lf][cr][lf]

или

GET index.html[cr][lf]
Host: example.com[cr][lf]
[cr][lf][cr][lf]

Чтобы запросить, например, что;

GET example.com/index.html[cr][lf]
Host: contoso.com[cr][lf]
[cr][lf][cr][lf]

Было бы логической ошибкой, и это против того, о чем вас предупреждают RFC.

Как видите, URL создается удаленным сервером, в зависимости от того, как был написан запрос.

1
ответ дан 4 December 2019 в 15:45

Теги

Похожие вопросы