Подтвердить что ты не робот

Перенаправление 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.

Почему происходит последний случай?

4b9b3361

Ответ 1

В RFC не указывается какое-либо поведение, связанное с реферером, в определении статуса 301 или 301-специфическое поведение в определении заголовка Referer. Таким образом, я должен сказать, что хотя это поведение, поддерживающее реферер, логично, оно не определено в RFC, и поэтому вы никогда не можете быть уверены.

Ответ 2

При переходе между HTTP и HTTPS спецификация HTTP указывает, что заголовок рефеера НЕ должен отправляться (см. 15.1.3 в RFC2616), Спецификация не говорит, что должно происходить между страницами HTTPS.

Интересно, что firefox по умолчанию игнорирует спецификацию в этом случае, но может быть выполнен, чтобы соответствовать настройке конфигурации network.http.sendSecureXSiteReferrer.

Ответ 3

Более https браузеры не отправляют REFERRERS. Это в RFC.