在某些情况下,Referer 从 HTTPS 传递到 HTTP...如何传递?

在某些情况下,Referer 从 HTTPS 传递到 HTTP...如何传递?

理论上,浏览器不会将 HTTPS 站点的 referer 信息传递到 HTTP 站点。根据我的经验,情况一直如此。但我刚刚发现了一个例外,我想了解它为什么有效,这样我也可以使用它。

在以下网址搜索“我的引荐来源是什么”https://www.google.ca/
例如:https://www.google.ca/search?q=what+is+my+referer

有几个网站会显示 referer。它们似乎都“起作用”了,尽管它们不应该起作用。例如,单击 www.whatismyreferer.com。我得到:

 Your referer:
 https://www.google.ca/

请注意,有时(很少见)我会得到“无引用”的结果。返回并再次单击该链接,下次它将“有效”。

这不应该发生。www.whatismyreferer.com 是一个非 HTTPS 网站。不应传递 referer 标头,但事实并非如此。

这是怎么回事?我如何才能从我的 HTTPS 网站对我链接到的 HTTP 网站执行相同的操作?

答案1

看起来这是由于<meta>Google 正在使用的新标头所致:

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

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

目前只有一些浏览器完全支持,所以这不是一个完整的解决方案,但肯定是一个开始!

答案2

这是标准行为。

https://www.rfc-editor.org/rfc/rfc2616#section-15.1.3

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

所以如果你的客户这样做,那就违反了标准。

再说了,谷歌就是标准,他们可以做任何他们想做的事:-)

答案3

这似乎是 google 页面上的 javascript 所做的事情。在启用 noscript 的 Firefox 中看不到它,在 Windows 上的 Chrome 中禁用 javascript 后也看不到它。我不知道具体是什么,因为我没有深入研究过。

答案4

这是因为当你点击链接时,你会被重定向到https://www.google.... 到http://www.google...然后您将被重定向到 www.whatismyreferer.com

而且就像你说的,http 网站之间会传输 referer。

你可以用Firefox 扩展

相关内容