2009-09-01 69 views
36

经过几次测试后,我开始得出结论,即当浏览器从https页面点击http页面时,不会发送Referer HTTP页眉。从https页面转到http页面时是否发送HTTP标头Referer?

这是什么安全原因?是在标准的某个地方定义的?

+0

后,在它完全取决于是否引用站点应设置或者不是客户端任何情况下。 – 2009-09-01 10:45:26

+1

@Brian:但客户应遵循/尊重定义他们正在使用的协议的RFC。 – 2009-09-01 10:46:20

+0

目前接受的答案是一个很好的答案,但它与之前发布的@ avid的答案相同。 – mikemaccana 2016-02-21 18:41:58

回答

53

HTTP RFC状态,在节15.1.3 Encoding Sensitive Information in URI's

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

因此,这是预期/标准行为。

+2

好的,那么Google如何以及为什么将发件人从https发送到非安全网站? – confiq 2014-03-18 11:05:03

+2

@confiq,因为它说'不应该'? – 2014-07-09 05:01:27

17

是的,在standard定义:

客户不应该包括在一个(非安全)HTTP 请求的Referer 报头字段,如果参照页面转移与安全协议

+2

我只是添加了一些解释,https网址通常包含敏感信息,例如sessionid,帐号等等。当然,这甚至在SSL上也是很糟糕的,但它仍然完成了...无论如何,HTTPS会话通常是敏感的应用程序,没有理由不必要地暴露该信息。 – AviD 2009-09-01 10:35:03

4

原因:有时会话ID是URL编码的。 HTTP页面可以具有跨站点脚本,从HTTPS通信中窃取会话。为了防止这种情况,引用者不会在HTTPS到HTTP转换中传输,因此URL编码的sessin ID不会被盗用。

+0

op正在询问http - > https,反之亦然。 – dsas 2011-06-23 11:22:28

+2

@dsas“当点击https页面中的一个http页面”时表示https - > http,而不是http - > https。 – 2012-04-03 04:45:30

+0

@JohnPick你当然是对的,我不确定我是怎么读错的。 – dsas 2012-04-15 00:14:14

19

根据这w3c document on referrer policy其实它不是那么简单(2014年起)。

默认行为是浏览器在从HTTPS到HTTP时不会发送引用信息。但是,从HTTPS到HTTPS时,浏览器将发送引荐来源。

此外,在HTML5中,有一个新的meta标签命名的引荐,看起来像这样:

<meta name="referrer" content="origin"> 

New browsers have already implemented this。因此,不管浏览器是否会发送引荐,都将在不久的将来取决于此元标记。如果此元标记未包含在页面的HTML中,那么浏览器将使用默认行为。

以下是引用meta标签的内容属性的可能值:

  • 没有引荐:推荐人将不会被发送,无论HTTP或HTTPS
  • 产地:只有原点(主)域将被作为推荐人
  • 原点时,crossorigin:相同的起源将发送完整的引荐URL和跨原点将只发送源URL作为引用
  • 没有引用,当降级:这是默认的行为时,没有引用元标记在页面上提供。
  • 不安全,网址:这将始终发送引荐,无论HTTP或HTTPS

此外,还有一些遗留属性为引用元标记值。这些都不再推荐使用,但目前在很多网站使用:

  • 从未:同无引用
  • 默认:同无引用,当降级
  • 总是:同不安全-url

我希望这些信息将有助于别人谁刚刚发现这个帖子2014年

+0

好的提示。但它不适用于所有设备。 :(PC/Mac中的Chrome工作正常,但** Andorid **中的Chrome无法正常工作! – Kane 2015-09-25 08:43:40

相关问题