从https页面转到http页面时是否发送了HTTP标头Referer?

jej*_*eje 38 security https http http-headers

经过几次测试后,我开始得出这样的结论:浏览器在从https网页点击http页面时不会发送Referer HTTP标头.

这有什么安全理由?是在标准的某个地方定义的吗?

Pas*_*TIN 53

HTTP RFC状态,在第15.1.3编码URI的敏感信息:

如果引用页面是使用安全协议传输的,则客户端不应在(非安全)HTTP请求中包含Referer头字段.

所以,这是预期/标准行为.

  • 好的,那么google如何以及为什么将引用从https发送到非安全站点? (2认同)
  • @confiq因为它说'不应该'? (2认同)

Fay*_*yaz 20

根据这篇关于推荐人政策的w3c文件,实际上它不再那么直接了(2014年以后).

默认行为是,从HTTPS到HTTP时,浏览器不会发送引用者信息.但是,浏览器会在从HTTPS转到HTTPS时发送referrer.

此外,在HTML5中,有一个名为referrer的新元标记,如下所示:

<meta name="referrer" content="origin">
Run Code Online (Sandbox Code Playgroud)

新的浏览器已经实现了这一点.因此,浏览器是否会发送引荐来源,将在不久的将来取决于此元标记.如果此元标记未包含在页面的HTML中,则浏览器将使用默认行为.

以下是referrer元标记的content属性的可能值:

  • no-referrer:无论HTTP还是HTTPS,都不会发送Referrer
  • origin:只有origin(主)域将作为referrer发送
  • origin-when-crossorigin:相同的来源将发送完整的引荐来源网址,而交叉来源将仅发送原始网址作为引荐来源
  • no-referrer-when-downgrade:当页面上没有提供referrer元标记时,这是默认行为.
  • unsafe-url:无论HTTP还是HTTPS,它都会始终发送referrer

此外,referrer元标记还有一些遗留属性值.不再推荐这些,但目前在许多网站中使用:

  • 永远:与没有推荐人相同
  • 默认值:与no-referrer-when-downgrade相同
  • 总是:与unsafe-url相同

我希望这些信息对2014年之后刚发现这篇文章的人有所帮助.


Avi*_*viD 17

是的,在标准中定义:

如果引用页面是使用安全协议传输的,则客户端不应在(非安全)HTTP请求中包含Referer头字段

  • 我只是添加一些解释,https网址通常包含敏感信息,例如sessionid,帐号等.当然,这甚至超过了SSL,但它仍然完成......而且无论如何,HTTPS会话通常都是敏感的应用程序,没有理由不必要地暴露该信息. (2认同)