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, который указывает столько же?:
В первый раз вокруг:
Любые последующие времена вокруг:
Я провел несколько тестов и обнаружил, что некоторые браузеры кэшируют результат 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 для тестирования:
Я запустил прокси-сервер на моем собственном компьютере ( Proxomitron Naoko 4.2 со всеми включенными фильтрами выключенный). В каждом браузере я устанавливаю настройки прокси так, чтобы они указывали на мой собственный компьютер. Я очистил кеш браузера, затем несколько раз посетил старый адрес и заглянул в окно журнала прокси-сервера, чтобы узнать, какие запросы делал браузер.
При первом посещении старого адреса в журнале прокси-сервера отображается запрос старого адреса, ответ 301 и запрос нового адреса. Если старый адрес посещается снова, журнал либо показывает тот же набор запросов (301 не был кэширован), либо показывает только новый запрос адреса (301 был кэширован).
Я тестировал ввод старого адреса в поле адреса, доступ к старому адресу из закладки и доступ к старому адресу по ссылке на странице. Каждый браузер работал одинаково независимо от способа обращения к адресу.
[Я нашел этот вопрос, исследуя аналогичный вопрос суперпользователя: Изменяют ли браузеры URL-адреса сохраненных закладок в ответ на перенаправление 301? ]