参考(r)在技术上如何工作?

时间:2010-06-18 00:28:39

标签: html http-referer

我不明白:Google Analytics等网络服务器和跟踪器如何跟踪推介?

它是HTTP的一部分吗?

是否有某些(未)指定的浏览器行为?

显然,每次点击网页上的链接时,都会在请求中传递原始网页。

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

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

奖金(完全相关)问题:如果,在我自己的网站上(由Tomcat提供),我将链接指向另一个网站,另一个网站是否将我的网站视为“推荐人”,而我没有在Tomcat做任何特别的事情?

8 个答案:

答案 0 :(得分:10)

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

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

答案 1 :(得分:8)

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

编辑:好的,RFC明白地说:

  

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

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

答案 2 :(得分:4)

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

  

引荐来源字段是可选部分   由...发送的HTTP请求   浏览器程序到Web服务器。

来自RFC 2616:

  

Referer [sic] request-header字段   允许客户端指定   服务器的好处,地址   (URI)从中获取的资源   获得了Request-URI(   “引用者”,虽然标题   字段拼写错误。)

答案 3 :(得分:1)

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

答案 4 :(得分:1)

您的浏览器会针对每个页面请求传递referrer。

JavaScript似乎也可以访问它,但确实如此。

答案 5 :(得分:1)

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

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

您的问题的答案是肯定的,因为浏览器发送了引用者。

答案 6 :(得分:1)

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

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

答案 7 :(得分:1)

当您点击链接时,浏览器会在请求中添加Referer标头。它是part of HTTP。您可以阅读更多相关信息here