谷歌分析如何避免同源政策?
Posted
技术标签:
【中文标题】谷歌分析如何避免同源政策?【英文标题】:How does google analytics avoid same origin policy? 【发布时间】:2012-11-19 12:53:27 【问题描述】:我有一个项目的想法,该项目涉及一个 javascript 终端,该终端利用指定的 php 脚本作为服务器来执行远程功能。我知道同源政策会成为这样一个项目的障碍,但看看我每天使用的谷歌分析,他们似乎有办法大规模避免这个问题。
【问题讨论】:
一般情况下,script
标签&jsonp格式,有时使用iframe
。
感谢您提到jsonp,我不知道这个补充。我一直想知道为什么google不将JS和html分开,看来script
标签对此至关重要。
据我记得,GA 插入(通过 JS)<img>
,其 src 属性包含 GA 服务器需要知道的所有信息(嵌入图像没有跨域限制)。我相信返回的实际图像是 1x1 空白图像。
定义 JavaScript 终端。
@techfoodbar 很有趣但也很老套。我希望script
标签就足够了。根据***,有些人使用 JS 注入来创建多个 script
标签。
【参考方案1】:
Google Analytics、Google AdWords 和几乎所有其他分析/网络营销平台都使用<img>
标签。
他们加载他们的 JS 程序,这些程序处理您在页面上放置的任何跟踪,然后他们创建一个图像并将图像的来源设置为与其服务器的域相同,并将您的所有跟踪信息添加到查询字符串。
关键在于它如何到达那里并不重要:
服务器只关心被调用的 URL 内部的数据,客户端只关心调用特定的 URL,而不关心获取任何返回值。
因此,多年前有人选择了<img>
,并且公司一直在使用它。
【讨论】:
@Lee 是的。但是,在 AJAX 成为家喻户晓的名字之前,网络分析跟踪和搜索引擎营销就已经以一种或另一种形式出现了,而且每个人仍然在CDATA
评论标签中包装脚本。那时,选择img
标签可能是因为noscript
的好处。事实上,如果您查看 AdWords 跟踪,甚至是 SiteCatalyst(一个您可能每年支付 60,000 美元以上的程序)跟踪,他们的 JS 部分下方仍然有一个 noscript
部分。所以JS会加载外部程序并构建一个类似于noscript
版本的镜像。
@Lee 尽管是一个 hack,但以正确的方式操作会在您的数据中留下大漏洞(甚至比使用这种脆弱方法提供的漏洞更大),因为许多浏览器不支持 CORS。再过 5 年,这可能是一个可行的解决方案,因为每个男人、女人和烤面包机都会被注入跨域 JS。在那之前,我们一直坚持使用次优解决方案来最大化被跟踪的人数,这归结为 <img>
或 <script>
,旨在 100% 内容无效。
我明白,我希望它会随着时间的推移而运作良好。古老的“如果它没有坏,不要修理它”的格言浮现在脑海中。
但是,如果有人向分析服务器发送 curl 请求,其来源设置为 xyz.com,该怎么办。分析如何识别这是一个有效的请求还是机器人。【参考方案2】:
允许跨域请求的现代方式是让服务器使用以下标头响应任何请求:
Access-Control-Allow-Origin: *
这允许来自任何主机的请求,或者可以使用特定主机代替*
。这称为跨域资源共享 (CORS)。不幸的是,旧版浏览器不支持它,因此在这种情况下,您需要破解浏览器才能解决问题(就像评论者所说的可能通过请求图像)。
【讨论】:
这似乎是一种“更干净”的方式。很好的输入 缺点是您将无法发送或读取 cookie 吗? Cookie 对于跟踪用户很重要——即使他没有登录【参考方案3】:您可以从第三方网站获取代码,但使用它们收集数据受到the policy 的限制。
Google 使用 1st-orgine-site 嵌入的“_gaq”函数数组收集数据,然后 Google 将收集到的数据发送到 http-request 参数中。
http://www.google-analytics.com/__utm.gif?utmwv=4&utmn=769876874&utmhn=example.com&utmcs=ISO-8859-1&utmsr=1280x1024&utmsc=32-bit&utmul=en-us&utmje=1&utmfl=9.0%20%20r115&utmcn=1&utmdt=GATC012%20setting%20variables&utmhid=2059107202&utmr=0&utmp=/auto/GATC012.html?utm_source=www.gatc012.org&utm_campaign=campaign+gatc012&utm_term=keywords+gatc012&utm_content=content+gatc012&utm_medium=medium+gatc012&utmac=UA-30138-1&utmcc=__utma%3D97315849.1774621898.1207701397.1207701397.1207701397.1%3B...
谷歌演示清楚how tracking works.
【讨论】:
以上是关于谷歌分析如何避免同源政策?的主要内容,如果未能解决你的问题,请参考以下文章