301重定向是否始终保留引荐来源?

时间:2009-09-09 08:22:13

标签: redirect http-status-code-301 http-referer

我想知道301重定向是否始终保留引荐来源。

我创建了一个名为“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.

为什么最后一种情况会发生?

3 个答案:

答案 0 :(得分:28)

RFC未在状态301定义中指定任何特定于引荐者的行为,也未在Referer标头定义中指定特定于301的行为。因此,我不得不说虽然这个引用者保留行为是合乎逻辑的,但它没有在RFC中定义,因此你永远无法确定。

答案 1 :(得分:11)

当在HTTP和HTTPS之间进行时,HTTP规范说不应发送引用标头(参见RFC2616中的15.1.3)。规范没有说明HTTPS页面之间应该发生什么。

有趣的是,在这种情况下,firefox默认忽略规范,但可以通过设置network.http.sendSecureXSiteReferrer配置设置来使其符合。

答案 2 :(得分:-3)

通过https,浏览器不会发送REFERRERS。这是在RFC中。