Поле заголовка HTTP Location возвращается в ответах от HTTP- сервера в двух случаях:
Устаревшая версия спецификаций HTTP 1.1 (IETF RFC 2616) требовала полного абсолютного URI для перенаправления. [2] Рабочая группа IETF HTTP обнаружила, что наиболее популярные веб-браузеры допускают передачу относительного URL-адреса [3] и, следовательно, обновленные спецификации HTTP 1.1 (IETF RFC 7231) смягчили первоначальное ограничение, разрешив использование относительных URL-адресов в заголовках Location. [4]
Абсолютные 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-адресом исходного запроса.
Запрос клиента на https://www.example.com/blog/all может получить ответ сервера с путем, который является абсолютным, поскольку он начинается со слеша: [7]
HTTP / 1.1 302 Найдено местоположение : /articles/
URL-адрес местоположения расширяется клиентом до https://www.example.com/articles/ . [8]
Запрос клиента на https://www.example.com/blog/latest может получить ответ сервера с относительным путем, поскольку он не начинается со слеша: [7]
HTTP / 1.1 302 Найдено местоположение : 2020/zoo
Клиент удаляет сегмент пути после последней косой черты исходного URL-адреса и добавляет относительный путь, в результате чего получается https://www.example.com/blog/2020/zoo . [9] [8]