Как URI строится из заголовка Location? - PullRequest
0 голосов
/ 30 апреля 2018

Запрос GET к URL-адресу "http://fakedomain.com/my/abc/redirect.php?url=www.example.com"" приводит к следующему заголовку ответа,

HTTP/1.1 302 Found
Date: Mon, 30 Apr 2018 07:39:12 GMT
Server: Apache/2.2.15 (CentOS)
X-Powered-By: PHP/5.3.3
Location: www.example.com
Content-Length: 40
Connection: close
Content-Type: text/html; charset=UTF-8

Как сервер подготавливает / агент пользователя готовит URL из этого заголовка местоположения.

Отправляет ли запрос на перенаправление на " www.example.com "? ИЛИ ЖЕ Отправляет ли он запрос перенаправления на "http://fakedomain.com/my/abc/www.example.com"?

И почему он будет так создавать URL?

1 Ответ

0 голосов
/ 30 апреля 2018

Отправляет ли запрос перенаправления на www.example.com? Или он отправляет запрос перенаправления на http://fakedomain.com/my/abc/www.example.com?

Запрос должен быть перенаправлен на http://fakedomain.com/my/abc/www.example.com.

RFC 7231 говорит следующее относительно заголовка Location (выделено моё):

7.1.2. Расположение

Поле заголовка Location используется в некоторых ответах для обозначения конкретный ресурс по отношению к ответу. Тип отношение определяется комбинацией метода запроса и семантика кода состояния.

 Location = URI-reference

Значение поля состоит из одной URI-ссылки. [...]

Концепция URI-ссылка определяется следующим образом в RFC 3986 (выделено мое):

4,1. Ссылка на URI

URI-ссылка используется для обозначения наиболее распространенного использования ресурса Идентификатор.

 URI-reference = URI / relative-ref

URI-ссылка - это либо URI, либо относительная ссылка. Если Префикс URI-ссылки не соответствует синтаксису схемы его разделитель двоеточия, то URI-ссылка является относительным ссылка. [...]

Таким образом, www.example.com следует интерпретировать как относительную ссылку , а не как абсолютный URI .

Ситуация www.example.com описывается как ссылка на суффикс в RFC 3986 : она имеет тот же синтаксис, что и ссылка на относительный путь, и не может быть используется в тех случаях, когда ожидается относительная ссылка (выделено мое):

4,5. Суффикс Ссылка

Синтаксис URI разработан для однозначной ссылки на ресурсы и расширяемость через схему URI. Тем не менее, в качестве идентификации URI и использование стало обычным явлением, традиционные средства массовой информации (телевидение, радио, газеты, рекламные щиты и т. д.) все чаще используют суффикс URI как ссылка, состоящая только из авторитета и пути части URI, такие как

 www.w3.org/Addressing/

или просто зарегистрированное DNS-имя. Такие ссылки в первую очередь предназначен для интерпретации человеком, а не для машин, с предположением, что контекстная эвристика достаточна для заполните URI (например, большинство зарегистрированных имен начинаются с www могут иметь префикс URI http://). Хотя нет стандартный набор эвристик для устранения неоднозначности суффикса URI, многие клиентские реализации позволяют вводить их пользователю и эвристическое разрешение.

Хотя такая практика использования ссылок на суффиксы распространена, она следует по возможности избегать и никогда не использовать в ситуации, когда ожидаются долгосрочные ссылки. Эвристика отмеченное выше будет меняться со временем, особенно когда новая схема URI становится популярным, и часто неправильно, когда используется вне контекста. [...]

Поскольку суффикс URI имеет тот же синтаксис, что и ссылка на относительный путь, ссылка на суффикс не может использоваться в тех случаях, когда ожидается ссылка. В результате ссылки на суффиксы ограничены места, где нет определенного базового URI, например, диалоговые окна и оффлайн реклама.

...