在哪种情况下,HTTP referer将被截断

时间:2017-07-10 11:53:57

标签: http http-referer

我试图理解HTTP referer标头的行为。我注意到有时referer已满(完整的URL,包括路径和查询字符串),但大多数只包含域。

例如' https://www.google.com/'而不是' https://www.google.com/search?q=http+referer+truncated&oq=http+referer+truncated&aqs=chrome..69i57.6485j0j1&sourceid=chrome&ie=UTF-8#q=http+referer+is+not+full'

是否有任何关于何时参考和完整以及何时被截断的规则?

3 个答案:

答案 0 :(得分:3)

截至2020年11月的详细信息...

在发出跨域请求时,许多浏览器已开始默认使用更严格的引用者策略(strict-origin-when-cross-origin),而不是旧的默认引用策略(no-referrer-when-downgrade)。这通常会导致网址被截断,但有时意味着根本不会设置引荐来源网址(no-referrer)。

这是一篇很好的文章的节选: https://plausible.io/blog/referrer-policy

Chrome使用的是版本85的strict-origin-when-cross-origin。如果在同一域上,则发送严格路径是“严格起源-何时跨域”,但是如果去到另一个域,则仅发送域本身。以前它使用no-referrer-when-downgrade

Firefox默认使用no-referrer-when-downgrade。除非请求从HTTPS发送到HTTP,否则它始终通过完整路径。 Firefox在“私人浏览”选项卡中将strict-origin-when-cross-origin用于已知的跟踪器。

Edge正在使用no-referrer-when-downgrade。与Firefox相同。

Safari正在使用strict-origin-when-cross-origin。与Chrome相同。

Brave正在使用no-referrer,其中引荐来源标头已被完全删除。即使源相同的请求,它也永远不会共享完整的URL,甚至您也看不到跨源请求的域名。

答案 1 :(得分:1)

HTTP引用标头是由浏览器根据所需标准使用Referrer Policy创建的,即使大多数浏览器使用了一般标准,浏览器如何处理服务器指令(主要是移动网络浏览器)也存在一些差异是否与WWWC就此问题提出的建议并不合作。

那么为什么需要不同的HTTP引用标头?要理解这一点,我们需要先了解这些头文件的用途。最简单形式的主要目的是将信息从原始页面传送到新页面"。

我们在任何地方都能看到"信息"在Web上有一个附加到它的信息安全概念,HTTP标头也没有什么不同。根据信头所携带的信息类型,服务器可以指定需要使用的引用者策略的类型。以下是W3

的推荐人政策列表

enum ReferrerPolicy { "", "no-referrer", "no-referrer-when-downgrade", "same-origin", "origin", "strict-origin", "origin-when-cross-origin", "strict-origin-when-cross-origin", "unsafe-url" };

上面列出的推荐人政策链接中提供了有关这些内容的详细信息。

举个例子; 使用谷歌搜索"黄页"。在这种情况下

来源:https://www.google.ie

引用者:https://www.google.ie/

推荐人政策:来源

生成的网址:https://www.google.ie/gen_204?atyp=i&ct=&cad=udla=3&ei=x65kGDkdyKGHDkF0KeoBg&e=12&zx=1494785478502

链接到第一个结果是

https://www.google.ie/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0ahUKEwiA26TfiHSGDFHKFAKHQXoCWUQFggoMBB&url=https%3A%2F%2Fwww.goldenpages.ie%2F&usg=AFQjCNGTG-tsBSFHgMkXw_GuvOcLEOD2hg

实际网址为https://www.goldenpages.ie/

当我们实际点击链接时,引荐来源更改为

Referer:https://www.goldenpages.ie/,推介人政策

推荐人政策:no-referrer-when-downgrade

这意味着,如果我们点击当前页面中的其他链接,我们就不会看到所有其他参数与我们在Google搜索结果页面的网址中看到的相似。

证明是这种情况;单击当前页面中的任何链接,并根据策略类型观察引用者标题更改(如果您使用开发人员工具并检查网络活动,可以在关联的js文件中找到)

当我点击"列出您的商家"链接推荐人留下来

https://www.goldenpages.ie/list-your-business/

并且没有传递其他参数

所以只是为了整理这个凌乱的解释;生成什么URL取决于有关Referrer策略的规则可能是一个没有参数的简单基本规则,或者是一个非常长的URL,其中包含大量与用户和导航原点相关的信息。

注意:网址无法正常工作,我已经混淆了一些字母。

答案 2 :(得分:0)

同时有Referrer-Policy标头和referrer元标记。

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

他们似乎做着完全一样的工作(如@Ulug的答案所述)。如果两者都存在,我不知道浏览器如何决定选择哪一个,我只是删除了HTML来解决我的问题。