5

我试图了解 HTTP 引用标头的行为。我注意到有时引用者是完整的(完整的 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 '

是否有关于裁判何时满员以及何时被截断的规则?

4

3 回答 3

6

HTTP 引荐标头是由浏览器根据所需的标准使用引荐来源政策创建的,尽管大多数浏览器都使用通用标准,但浏览器如何处理服务器指令存在一些差异,主要是移动 Web 浏览器没有很好地配合 WWWC 关于这个问题的建议。

那么为什么需要不同的 HTTP referrer 标头呢?要理解这一点,我们需要先看看这些标头是用来做什么的。最简单形式的主要目的是“将信息从原始页面传送到新页面”。

我们在网络中看到“信息”这个词的任何地方都附有一个信息安全概念,HTTP 标头也不例外。根据header携带的信息类型,服务器可以指定需要使用的referrer策略类型。以下是 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_GuvOcLE

而实际的 URL 是https://www.goldenpages.ie/

当我们实际点击链接时,referrer 变为

推荐人:https : //www.goldenpages.ie/推荐人政策是

推荐人政策:降级时无推荐人

这意味着如果我们从当前页面单击另一个链接,我们将不会看到与我们在 google 搜索结果页面的 URL 中看到的参数相似的所有附加参数。

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

当我单击“列出您的业务”链接时,推荐人保持为

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

并且没有传递其他参数

所以只是整理一下这个混乱的解释;生成的 URL 取决于针对推荐人策略设置的规则,可能是没有参数的简单基本规则,也可能是非常长的 URL,其中包含与用户和导航来源相关的大量信息。

注意: URL 不起作用我弄乱了一些字母。

于 2017-07-11T12:17:37.417 回答
6

截至 2020 年 11 月的更新详情...

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

这是一篇关于此的好文章的摘录: https ://plausible.io/blog/referrer-policy

Chromestrict-origin-when-cross-origin从版本 85 开始使用。 Strict-origin-when-cross-origin 是在同一个域中发送完整路径的位置,但如果转到另一个域,则仅发送域本身。以前它使用no-referrer-when-downgrade.

Firefoxno-referrer-when-downgrade默认使用。除非请求从 HTTPS 发送到 HTTP,否则它始终传递完整路径。Firefoxstrict-origin-when-cross-origin在隐私浏览选项卡和已知跟踪器中使用。

Edge 正在使用no-referrer-when-downgrade. 和火狐一样。

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

Brave 正在使用no-referrer完全删除引用标题的地方。即使对于同源请求,它也从不共享完整的 URL,您甚至看不到跨域请求的域名。

于 2020-11-10T22:14:49.713 回答
0

Referrer-Policy标题和referrer元标记。

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

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

于 2020-09-29T04:24:38.653 回答