经过几次测试后,我开始得出这样的结论:浏览器在点击https页面的http页面时不会发送Referer HTTP标头。
有什么安全理由?是在标准的某个地方定义的吗?
答案 0 :(得分:53)
HTTP RFC部分,15.1.3 Encoding Sensitive Information in URI's部分:
客户不应包含Referer (非安全)HTTP中的头字段 如果推荐页面是请求 使用安全协议进行转移。
所以,这是预期/标准行为。
答案 1 :(得分:20)
根据w3c document on referrer policy,实际上不再那么直截了当(2014年起)。
默认行为是,从HTTPS到HTTP时,浏览器不会发送引用者信息。但是,浏览器会在从HTTPS转为HTTPS时发送引荐来源。
此外,在HTML5中,有一个名为referrer的新元标记,如下所示:
<meta name="referrer" content="origin">
New browsers have already implemented this。因此,浏览器是否会发送引荐来源,将在不久的将来取决于此元标记。如果此元标记未包含在页面的HTML中,则浏览器将使用默认行为。
以下是引荐来源元标记的内容属性的可能值:
此外,referrer元标记还有一些遗留属性值。这些不再推荐,但目前在许多网站中使用:
我希望这些信息对2014年之后刚发现这篇文章的人有所帮助。
答案 2 :(得分:17)
是,在standard:
中定义客户不应包含Referer (非安全)HTTP中的头字段 如果推荐页面是请求 使用安全协议转移
答案 3 :(得分:4)
原因:有时SessionID是URL编码的。 HTTP页面可以具有跨站点脚本,从HTTPS通信中窃取会话。为了防止这种情况,引用者不会在HTTPS到HTTP转换上传输,因此URL编码的sessin ID不会被盗。