V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
Livid
269.09D
569.75D
V2EX  ›  SSL

https 跳转到 http 时的 Referer 丢失问题

  •  1
     
  •   Livid ·
    PRO
    · Mar 2, 2017 · 7188 views
    This topic created in 3350 days ago, the information mentioned may be changed or developed.

    根据 W3C RFC 2616 里的规则( https://www.w3.org/Protocols/rfc2616/rfc2616-sec15.html#sec15.1.3 ),在 https 的网站上点击 http 链接时, Referer 并不会发送到 http 目的地。

    Clients SHOULD NOT include a Referer header field in a (non-secure) HTTP request if the referring page was transferred with a secure protocol.
    

    如果希望在这种情况下保持发送 Referer ,那么可以在页面中加入下面的这个 header :

    <meta name="Referrer" content="origin" />
    

    目前的主流浏览器都已经支持这个头部,除了 IE 系列:

    http://caniuse.com/#feat=referrer-policy

    下面是关于这个标签的具体解释:

    https://w3c.github.io/webappsec-referrer-policy/

    Supplement 1  ·  Mar 3, 2017

    这里需要注意的一个坑是,如果你在 HTML 中加入的是下面的这个 Referrer Policy,那么在发送 Referer 头部时,只会发送源网站的域名:

    <meta name="Referrer" content="origin" />
    

    如果你希望发送完整的 URL,那么你需要加入的是:

    <meta name="Referrer" content="unsafe-url" />
    

    关于这里可能的各种设置:

    https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url

    5 replies    2018-11-16 20:21:08 +08:00
    dant
        1
    dant  
       Mar 2, 2017
    要的就是这个 feature (逃
    LukeXuan
        2
    LukeXuan  
       Mar 3, 2017
    看起来登录失败原因是这个 append
    kechx
        3
    kechx  
       Mar 3, 2017
    还有一个,直接在浏览器输入地址时 refer 首部并不会被添加,同一窗口打开外链 refer 首部会被添加
    raquant
        4
    raquant  
       Mar 18, 2017
    好东西!
    kslr
        5
    kslr  
       Nov 16, 2018
    没想到是可以接受 Referrer 的
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2694 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 61ms · UTC 03:30 · PVG 11:30 · LAX 20:30 · JFK 23:30
    ♥ Do have faith in what you're doing.