我试图理解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'
是否有任何关于何时参考和完整以及何时被截断的规则?
答案 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/gen_204?atyp=i&ct=&cad=udla=3&ei=x65kGDkdyKGHDkF0KeoBg&e=12&zx=1494785478502
链接到第一个结果是
实际网址为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来解决我的问题。