Перенаправление 301 всегда поддерживает referrer?
Я хочу знать, всегда ли перенаправление 301 всегда сохраняет referrer.
Я делаю страницу под названием "gotoorig_https.html", которая содержит гиперссылку на страницу "orig_https.asp".
"orig_https.asp" будет 301 перенаправлять на "dest.html", который показывает document.referrer.
В этом случае
http page(gotoorig_https.html) -> orig_https.asp(301 redirect)-> https page (dest.html) <--the referrer preserves
https page(gotoorig_https.html) -> orig_https.asp(301 redirect)-> https page (dest.html) <--the referrer preserves
Я также создаю страницу под названием "gotoorig_http.html", которая содержит гиперссылку на страницу "orig_http.asp".
"orig_http.asp" будет 301 перенаправлять на "dest.html", который показывает document.referrer.
В этом случае
http page(gotoorig_http.html) -> orig_http.asp(301 redirect)-> http page (dest.html) <--the referrer preserves
https page(gotoorig_http.html) -> orig_http.asp(301 redirect)-> http page (dest.html) <--the referrer DOES NOT preserve.
Почему происходит последний случай?
Ответы
Ответ 1
В RFC не указывается какое-либо поведение, связанное с реферером, в определении статуса 301 или 301-специфическое поведение в определении заголовка Referer
. Таким образом, я должен сказать, что хотя это поведение, поддерживающее реферер, логично, оно не определено в RFC, и поэтому вы никогда не можете быть уверены.
Ответ 2
При переходе между HTTP и HTTPS спецификация HTTP указывает, что заголовок рефеера НЕ должен отправляться (см. 15.1.3 в RFC2616), Спецификация не говорит, что должно происходить между страницами HTTPS.
Интересно, что firefox по умолчанию игнорирует спецификацию в этом случае, но может быть выполнен, чтобы соответствовать настройке конфигурации network.http.sendSecureXSiteReferrer.
Ответ 3
Более https браузеры не отправляют REFERRERS. Это в RFC.