Назад | Перейти на главную страницу

Где находится «URL-адрес в сообщении HTTP-запроса»?

HTTP: полное руководство говорит

Исходный сервер, который виртуально не размещен и не позволяет ресурсам различаться в зависимости от запрашиваемого хоста, может игнорировать значение поля заголовка Host. Но любой исходный сервер, который различает ресурсы на основе хоста, должен использовать следующие правила для определения запрошенного ресурса в запросе HTTP / 1.1:

  1. Если URL-адрес в сообщении HTTP-запроса является абсолютным (т.е. содержит схему и компонент хоста), значение в заголовке Host игнорируется в пользу URL.

  2. Если URL-адрес в сообщении HTTP-запроса не имеет хоста, а запрос содержит заголовок Host, значение хоста / порта получается из заголовка Host.

  3. Если на шагах 1 или 2 невозможно определить действительный хост, клиенту возвращается ответ 400 Bad Response.

Где находится «URL-адрес в сообщении HTTP-запроса»?

Это тот, который указан в строке запроса (в первой строке HTTP-запроса, после такого метода, как GET)?

Спасибо.

URL-адрес не обязательно должен появляться где-либо в HTTP-запросе (кроме случаев, когда он отправляется через прокси; см. Ниже).

В пункте 2 цитаты из вашей книги есть ошибка. URL-адрес не отображается в строке запроса в исходной форме, наиболее распространенной форме цели HTTP-запроса. В запросе обычно появляются только определенные компоненты URL-адреса, то есть хост (и порт, если применимо), который отображается в заголовке Host, а также путь и строка запроса, которые появляются в строке запроса. Одна вещь, которая не отображается в запросе, - это схема (http или https), которая иногда подходит разработчикам, если веб-приложению действительно необходимо знать схему.

Альтернативная форма строки запроса может содержать полный URL-адрес в качестве цели запроса, и серверы обязательно должны иметь возможность обрабатывать этот формат, известный как абсолютная форма. Эта форма обычно не видна, за исключением случаев, когда пользовательский агент сознательно обращается к прокси-серверу HTTP. В этом случае прокси-сервер должен знать схему, чтобы он мог попытаться передать запрос, а полная форма URL - это способ сделать это, определенное в соответствующем стандарте (RFC 7230).