理论上,浏览器不会将引用信息从HTTPS传递到HTTP站点。 根据我的经验,这一直是真实的。 但是我只是发现了一个exception,我想明白为什么它可以工作,所以我可以使用它。
在https://www.google.ca/上search“我的推荐人”
例如: https : //www.google.ca/search?q = what+is+my+referer
有几个网站将显示引用。 当他们不应该的时候,他们似乎都“工作”了。 例如,请点击www.whatismyreferer.com。 我得到:
Your referer: https://www.google.ca/
请注意,有时很less,我得到“不引荐”作为结果。 回去再次点击该链接,它会在下一次“工作”。
这不应该发生。 www.whatismyreferer.com是一个非HTTPS网站。 引用标题不应该被传递,但它是。
这里发生了什么,我怎么能从我的HTTPS站点到我链接的HTTP站点执行同样的操作?
看起来是由于Google使用了一个新的<meta>
标题:
<meta name="referrer" content="origin">
规格: https : //w3c.github.io/webappsec-referrer-policy/
目前只有几个浏览器完全支持 ,所以它不是一个完整的解决scheme,但肯定是一个开始!
这是标准的行为。
https://tools.ietf.org/html/rfc2616#section-15.1.3说
如果引用页面是通过安全协议传输的,那么客户端不应该在(非安全)HTTP请求中包含Referer头域。
所以如果你的客户正在这样做,那就违反了标准。
那么,谷歌是标准的,他们可以做任何他们想要的:-)
这似乎是在谷歌网页上的JavaScript正在做的事情。 我没有在启用了noscript的Firefox中看到它,并停止在Windows上的Chrome浏览器中看到它,如果我禁用JavaScript。 我不知道具体是什么,因为我还没有深入到底。
<meta>
Label的属性名称具有新的引用规则,Referrer控制HTTP Referer HTTP头的内容附加到从此文档发送的任何请求。
欲了解更多信息,请点击这里: RFC Referrer政策
这是因为当您点击链接时,您将被从https://www.google ….redirect到http://www.google …然后您被redirect到www.whatismyreferer.com
而且就像你所说的,http网站之间的引用传递。
您可以使用Firefox扩展程序进行检查