【问题标题】:Does 301 redirect always preserve referrer?301 重定向是否始终保留引荐来源网址?
【发布时间】:2010-11-26 18:20:21
【问题描述】:

我想知道301重定向是否总是保留referrer。

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

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • +1 表示不依赖上述行为。推荐人也可以伪造!
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 不正确。在 HTTPS 页面之间,规范中没有关于引用标头的任何内容,但规范确实说在 HTTP 和 HTTPS 之间切换时不应发送它们
      猜你喜欢
      • 2010-12-30
      • 2011-04-10
      • 1970-01-01
      • 2013-12-28
      • 1970-01-01
      • 1970-01-01
      • 2017-10-10
      • 2011-10-19
      • 1970-01-01
      相关资源
      最近更新 更多