31

我想知道 301 重定向是否总是保留引荐来源网址。

我制作了一个名为“gotoorig_https.html”的页面,其中包含指向“orig_https.asp”页面的超链接。
“orig_https.asp”将 301 重定向到显示 document.referrer 的“dest.html”。

在这种情况下,

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 重定向到显示 document.referrer 的“dest.html”。

在这种情况下,

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.

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

4

3 回答 3

32

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

于 2009-09-09T08:30:25.163 回答
14

在 HTTP 和 HTTPS 之间切换时,HTTP 规范规定不应发送引用标头(请参阅RFC2616中的 15.1.3 )。然而,规范并没有说明 HTTPS 页面之间应该发生什么。

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

于 2009-09-09T08:31:01.420 回答
-4

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

于 2009-09-09T08:26:26.583 回答