Клиентское поведение веб-браузера при обработке 301 перенаправления

RFC, кажется, предлагает, чтобы клиент постоянно кэшировал ответ: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

10.3.2 301 перемещенный постоянно

Требуемому ресурсу присвоили новый постоянный URI, и любые будущие ссылки на этот ресурс ДОЛЖНЫ использовать один из возвращенных URIs. Клиенты со ссылкой, редактируя возможности должны автоматически повторно связать ссылки на URI запроса к одному или нескольким новых ссылок, возвращенных сервером, если это возможно. Этот ответ является кэшируемым, если не обозначено иначе.

Новый постоянный URI ДОЛЖЕН быть дан полем Location в ответе. Если метод запроса не был ГОЛОВОЙ, объект ответа ДОЛЖЕН содержать короткое примечание к гипертексту с гиперссылкой к новому URI.

Если 301 код состояния получен в ответ на запрос кроме, ДОБИРАЮТСЯ или НАПРАВЛЯЮТСЯ, агент пользователя не ДОЛЖЕН автоматически перенаправлять запрос, если он не может быть подтвержден пользователем, так как это могло бы изменить условия, при которых был выпущен запрос.

  Note: When automatically redirecting a POST request after
  receiving a 301 status code, some existing HTTP/1.0 user agents
  will erroneously change it into a GET request.

Мне нелегко находить конкретную документацию браузера для любого главного браузера, который указывает, как они обрабатывают их.

Я начал рыть через исходный код Firefox, но быстро заблудился.

Действительно ли следующий сценарий верен, для которого (если таковые имеются) браузеры, и там категорическая документация или для Firefox или для IE, который указывает столько же?:

В первый раз вокруг:

  • 1.1: Пользователь вводит ссылку на сайт A или нажимает на ссылку, направленную на Site A
  • 1.2: Браузер интерпретирует ссылку на Site A, в первый раз, никакой кэш. Отправляет ДОБИРАЮТСЯ до Сайта A.
  • 1.2: Сайт A отвечает 301 Перенаправлением на Сайт B
  • 1.3: Браузер отправляет, ДОБИРАЮТСЯ до Сайта B.

Любые последующие времена вокруг:

  • 2.2: Пользователь нажимает на ссылку, направленную на Site A
  • 2.2: Browser видит, что, из-за прошлого 301 перенаправления, Сайт A должен теперь быть Сайтом B.
  • 2.3: Без инициирования любой запрос вообще на Site A, посвященные браузера Достигают Сайт B.
  • 19
    задан Jon Swanson 19 April 2010 в 08:27
    поделиться

    1 ответ

    Я провел несколько тестов и обнаружил, что некоторые браузеры кэшируют результат 301:

    Caches 301 result and skips contacting old address in future?
    
      Internet Explorer 7   no
      Firefox 3.0           no
      Chrome 4.0            yes
      Opera 10.01           yes for google.com, no for www.rnhart.net
    

    Как я тестировал

    Я использовал следующие два результата 301 для тестирования:

    • google.com возвращает 301 на www.google.com
    • www.rnhart.net возвращает 301 на rnhart.net

    Я запустил прокси-сервер на моем собственном компьютере ( Proxomitron Naoko 4.2 со всеми включенными фильтрами выключенный). В каждом браузере я устанавливаю настройки прокси так, чтобы они указывали на мой собственный компьютер. Я очистил кеш браузера, затем несколько раз посетил старый адрес и заглянул в окно журнала прокси-сервера, чтобы узнать, какие запросы делал браузер.

    При первом посещении старого адреса в журнале прокси-сервера отображается запрос старого адреса, ответ 301 и запрос нового адреса. Если старый адрес посещается снова, журнал либо показывает тот же набор запросов (301 не был кэширован), либо показывает только новый запрос адреса (301 был кэширован).

    Я тестировал ввод старого адреса в поле адреса, доступ к старому адресу из закладки и доступ к старому адресу по ссылке на странице. Каждый браузер работал одинаково независимо от способа обращения к адресу.


    [Я нашел этот вопрос, исследуя аналогичный вопрос суперпользователя: Изменяют ли браузеры URL-адреса сохраненных закладок в ответ на перенаправление 301? ]

    12
    ответ дан 30 November 2019 в 05:15
    поделиться
    Другие вопросы по тегам:

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