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

rav*_*org 17 http https http-headers

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

https://www.google.ca/上搜索“我的推荐人是什么”,
例如:https : //www.google.ca/search? q = what+is+my+referer

有几个站点会显示引用。他们似乎都在不应该“工作”的时候“工作”。例如,单击 www.whatismyreferer.com 之一。我得到:

 Your referer:
 https://www.google.ca/
Run Code Online (Sandbox Code Playgroud)

请注意,有时,我很少会得到“没有推荐人”的结果。返回并再次单击该链接,下次它就会“工作”。

这不应该发生。www.whatismyreferer.com 是一个非 HTTPS 站点。不应传递引用标头,但确实传递了。

这里发生了什么,我如何从我的 HTTPS 站点到我链接到的 HTTP 站点执行相同的操作?

rav*_*org 23

看起来是因为<meta>Google 使用了一个新标头:

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

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

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