stringtranslate.com

HTTP-местоположение

Поле заголовка HTTP Location возвращается в ответах от HTTP- сервера в двух случаях:

  1. Чтобы попросить веб-браузер загрузить другую веб-страницу ( перенаправление URL ). В этом случае заголовок Location должен быть отправлен с кодом статуса HTTP 3xx. Он передается как часть ответа веб-сервера, когда запрошенный URI имеет:
    • Временно переехал;
    • Перемещены навсегда; или
    • Обработал запрос, например, отправленную форму, и предоставляет результат этого запроса по другому URI
  2. Чтобы предоставить информацию о местоположении вновь созданного ресурса. В этом случае заголовок Location должен быть отправлен с кодом статуса HTTP 201 или 202. [ 1]

Устаревшая версия спецификаций HTTP 1.1 (IETF RFC 2616) требовала полного абсолютного URI для перенаправления. [2] Рабочая группа IETF HTTP обнаружила, что наиболее популярные веб-браузеры допускают передачу относительного URL-адреса [3] и, следовательно, обновленные спецификации HTTP 1.1 (IETF RFC 7231) смягчили первоначальное ограничение, разрешив использование относительных URL-адресов в заголовках Location. [4]

Примеры

Пример абсолютного URL

Абсолютные URL-адреса — это URL-адреса, которые начинаются со схемы [5] (например, http:, https:, telnet:, mailto:) [6] и соответствуют синтаксису и семантике, специфичным для схемы. Например, синтаксис и семантика, специфичные для схемы HTTP, для URL-адресов HTTP требуют «хост» (адрес веб-сервера) и «абсолютный путь» с необязательными компонентами «порт» и «запрос».

Клиент запрашивает https://www.example.com/index.html, используя

GET  /index.html  HTTP / 1.1 Хост :  www.example.com

может получить ответ сервера

HTTP / 1.1  302  Найдено местоположение :  https://www.example.org/index.php

Пример относительного URL-адреса и абсолютного пути

Относительные URL-адреса — это URL-адреса, которые не включают схему или хост. Чтобы их можно было понять, их необходимо объединить с URL-адресом исходного запроса.

Запрос клиента на https://www.example.com/blog/all может получить ответ сервера с путем, который является абсолютным, поскольку он начинается со слеша: [7]

HTTP / 1.1  302  Найдено местоположение :  /articles/

URL-адрес местоположения расширяется клиентом до https://www.example.com/articles/ . [8]

Относительный URL-адрес, пример относительного пути

Запрос клиента на https://www.example.com/blog/latest может получить ответ сервера с относительным путем, поскольку он не начинается со слеша: [7]

HTTP / 1.1  302  Найдено местоположение :  2020/zoo

Клиент удаляет сегмент пути после последней косой черты исходного URL-адреса и добавляет относительный путь, в результате чего получается https://www.example.com/blog/2020/zoo . [9] [8]

Смотрите также

Ссылки

  1. ^ Ричардсон, Леонард (2007). RESTful Web Services . Севастополь: O'Reilly. С. 228–230. ISBN 978-0-596-52926-0.
  2. ^ "Местоположение". Протокол передачи гипертекста -- HTTP/1.1. IETF . Июнь 1999. Раздел 14.30. DOI : 10.17487/RFC2616 . RFC 2616.
  3. ^ Билет рабочей группы IETF HTTPbis 185 [ мертвая ссылка ]
  4. ^ "Расположение". Протокол передачи гипертекста (HTTP/1.1): семантика и содержимое. IETF . Июнь 2014. Раздел 7.1.2. doi : 10.17487/RFC7231 . RFC 7231.
  5. ^ Унифицированный идентификатор ресурса (URI): общий синтаксис. IETF . Январь 2005 г. doi : 10.17487/RFC3986 . RFC 3986.
  6. ^ "Схемы унифицированных идентификаторов ресурсов (URI) IANA" . Получено 21.11.2014 .
  7. ^ ab "Относительная ссылка". Универсальный идентификатор ресурса (URI): универсальный синтаксис. IETF . Январь 2005 г., раздел 4.2. doi : 10.17487/RFC3986 . RFC 3986. Получено 22.11.2020 .
  8. ^ ab "Обычные примеры". Универсальный идентификатор ресурса (URI): универсальный синтаксис. IETF . Январь 2005 г., раздел 5.4.1. doi : 10.17487/RFC3986 . RFC 3986. Получено 22.11.2020 .
  9. ^ "Merge Paths". Uniform Resource Identifier (URI): Generic Syntax. IETF . Январь 2005. Раздел 5.2.3. doi : 10.17487/RFC3986 . RFC 3986. Получено 22.11.2020 .