为什么Google Analytics要请求GIF文件?

21

谷歌分析为什么需要请求GIF文件?

这是因为GIF比仅使用JavaScript可以访问更多的数据。是用来获取用户的IP地址吗?


2
@Chacha102:分析 JavaScript 向 GIF 图像发出请求。 - Brian McKenna
1
@Chacha102:查看谷歌关于gif请求结构的页面。http://code.google.com/intl/zh-CN/apis/analytics/docs/tracking/gaTrackingTroubleshooting.html#gifParameters - GmonC
请注意,上面提到的GA请求结构已经移动至此处:https://developers.google.com/analytics/resources/concepts/gaConceptsTrackingOverview#gifParameters - Robin Métral
4个回答

22

谷歌的JavaScript需要以某种方式将您的页面浏览详细信息传输到他们的服务器。Ajax不能跨域使用,因此提交信息的唯一方法是从谷歌服务器请求文件,并在查询字符串中传递必要的信息。为了方便这一点,必须使用标准的HTML标签请求某种内容。在不影响页面本身的情况下,最简单的方法是加载一个1x1透明GIF。请注意,在谷歌脚本(和其他脚本)的情况下,实际上并没有将此图像添加到页面中。它只是通过javascript语句加载。

var img1 = new Image();
img1.src = 'http://path/to/file.gif?otherinfohere';

这会加载图片但不会将其添加到页面中。也可以使用类似以下的脚本标签加载信息:

<script src="http://path/to/script.js?otherinfohere" type="text/javascript"><script>

然而,与图片相比,用户更有可能阻止 JavaScript,因此更安全的方法是请求图像。至于为什么他们会使用 gif 而不是 jpg,如果一个恶意浏览器添加了该图像到页面中,gif 更安全。透明的 gif 不太可能对布局产生负面影响,而 1x1 的 jpg 则会在页面某处留下一个 1 像素点。

编辑:关于用户阻止 JavaScript 的评论,可以在 noscript 标签中添加包含静态信息的 gif 请求,以便在禁用 JavaScript 的情况下进行基本跟踪。据我所知,GA 没有这样做,但一些其他的网络分析提供商确实这样做。


17
即使启用了JavaScript,分析仍然请求GIF文件。如果查看图像的GET参数,它包含有关浏览器的大量信息,例如utmsr=1280x1024(屏幕大小)。 Google代码中有一个参数列表
它使用图像请求发送有关浏览器的信息而不需要XMLHttpRequest
现在,为了真正回答最初的问题,Google可能是这样做来避免跨域XMLHttpRequest限制。

7
我认为谷歌使用图像请求是因为他们仅需要发送信息而无需接收任何信息。图像请求是最轻量级的方式。 - mylesmg
2
这个回答没有提供任何有用的信息。 @mylesmg 您的答案是正确的。 - atilkan

16

6
67字节,不是73字节。你必须一直读到结尾才能看到笑话! - Gareth Rees

1
  1. 您可以在没有 JavaScript 的情况下使用 __utm.gif 跟踪器(需要一些服务器帮助)。
  2. 您可以在电子邮件中使用它(在发送电子邮件之前需要一些编程帮助)。
  3. Urchin 是在 AJAX 流行之前开发的(2005年)。

这与跨域无关。他们本可以使用 JSONP 来实现。


JSONP 用于获取数据,而 Google Analytics 只需要传输数据。 - alex
2
图片标签用于获取数据,而且等等。您可以像在图像中一样在JSONP请求中放置查询字符串参数...并返回204。 - Neil McGuigan
我看到这是在尝试讽刺,但我无法理解其中的妙思。 - Rafael Eyng

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接