V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Livid
V2EX  ›  SSL

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

  •  1
     
  •   Livid · 2017-03-02 12:18:53 +08:00 · 6596 次点击
    这是一个创建于 2852 天前的主题,其中的信息可能已经有所发展或是发生改变。

    根据 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/

    第 1 条附言  ·  2017-03-03 08:58:48 +08:00

    这里需要注意的一个坑是,如果你在 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 条回复    2018-11-16 20:21:08 +08:00
    dant
        1
    dant  
       2017-03-02 13:12:11 +08:00
    要的就是这个 feature (逃
    LukeXuan
        2
    LukeXuan  
       2017-03-03 09:54:27 +08:00
    看起来登录失败原因是这个 append
    RihcardLu
        3
    RihcardLu  
       2017-03-03 10:00:24 +08:00
    还有一个,直接在浏览器输入地址时 refer 首部并不会被添加,同一窗口打开外链 refer 首部会被添加
    raquant
        4
    raquant  
       2017-03-18 12:01:50 +08:00
    好东西!
    kslr
        5
    kslr  
       2018-11-16 20:21:08 +08:00
    没想到是可以接受 Referrer 的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2891 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 12:35 · PVG 20:35 · LAX 04:35 · JFK 07:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.