12

我不明白:网络服务器和像 Google Analytics 这样的跟踪器如何能够跟踪推荐?

它是 HTTP 的一部分吗?

它是浏览器的一些(未)指定的行为吗?

显然,每次您单击网页上的链接时,原始网页都会随请求一起传递。

这背后的确切机制是什么?它是由某些规范指定的吗?

我已经阅读了一些文档,并且使用了我自己的 Tomcat 服务器和我自己的 Google Analytics 帐户,但我不明白“魔法”是如何发生的。

奖励(完全相关)问题:如果在我自己的网站(由 Tomcat 提供服务)上放置了指向另一个站点的链接,那么在没有我在 Tomcat 中做任何特别的事情的情况下,其他站点是否将我的网站视为“引荐来源”?

4

8 回答 8

12

Referer(在规范中拼写错误)是一个 HTTP 标头。它是所有主要 HTTP 客户端都支持的标准标头(尽管某些代理服务器和防火墙可以配置为剥离或破坏它)。当您单击一个链接时,您的浏览器会发送一个 HTTP 请求,其中包含被请求的页面以及找到该链接的页面等等。

由于这是客户端/请求标头,因此服务器是无关紧要的,是的,单击托管在您自己服务器上的页面上的链接会导致该页面的 URL 被发送到其他站点的服务器,尽管您的服务器可能不一定可以访问来自该其他站点,具体取决于您的网络配置。

于 2010-06-18T00:32:21.763 回答
8

添加到关于浏览器如何发送它的已经说过的一个细节:HTTPS 稍微改变了行为。我不知道它是否在任何规范中,但是如果您从 HTTPS 跳转到 HTTP,并且如果您留在同一个域或转到不同的域,那么有时不会发送引荐来源网址。我不知道确切的规则,但我在野外观察到了这一点。如果有一些关于此的规范或描述,那就太好了。

编辑:好的,RFC 清楚地说:

如果引用页面是使用安全协议传输的,则客户端不应在(非安全)HTTP 请求中包含Referer 头字段。

因此,如果您从 HTTPS 页面转到 HTTP 链接,则不会发送推荐人信息。

于 2010-06-18T00:36:51.577 回答
4

来自:http ://en.wikipedia.org/wiki/HTTP_referrer

referrer 字段是浏览器程序向 Web 服务器发送的 HTTP 请求的可选部分。

来自 RFC 2616:

为了服务器的利益,Referer[sic] request-header 字段允许客户端指定获取 Request-URI 的资源的地址 (URI)(“referrer”,尽管头字段拼写错误。)

于 2010-06-18T00:35:39.850 回答
1

如果您使用浏览器请求网页,您的浏览器将随请求一起发送 HTTP Referer 标头。

于 2010-06-18T00:31:27.007 回答
1

您的浏览器会在每个页面请求中传递引荐来源网址。

JavaScript 也可以访问 this 似乎不寻常,但确实如此。

于 2010-06-18T00:32:16.347 回答
1

是的,浏览器在 HTTP 标头中发送上一页。这是在 HTTP/1.1 规范中定义的:

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.36

您的问题的答案是肯定的,因为浏览器会发送引荐来源网址。

于 2010-06-18T00:33:13.020 回答
1

“referrer 字段是浏览器程序向 Web 服务器发送的 HTTP 请求的可选部分。”

http://en.wikipedia.org/wiki/HTTP_referrer

于 2010-06-18T00:34:01.720 回答
1

当您单击一个链接时,浏览器会Referer在请求中添加一个标头。它是HTTP 的一部分你可以在这里阅读更多关于它的信息。

于 2010-06-18T00:35:19.303 回答