12

我有一个项目的想法,该项目涉及一个 Javascript 终端,该终端利用指定的 PHP 脚本作为服务器来执行远程功能。我知道同源政策会成为这样一个项目的障碍,但看看我每天使用的谷歌分析,他们似乎有办法大规模避免这个问题。

4

3 回答 3

19

Google Analytics、Google AdWords 和几乎所有其他分析/网络营销平台都使用<img>标签。

他们加载他们的 JS 程序,这些程序处理你在页面上放置的任何跟踪,然后他们创建一个图像并将图像的源设置为等于他们服务器的域是什么,并将你所有的跟踪信息添加到查询字符串中.

关键在于它如何到达那里并不重要:
服务器只关心被调用的 URL 内部的数据,而客户端只关心对特定 URL 的调用,而不是获取任何返回值。
因此,有人在<img>多年前选择了它,并且公司一直在使用它。

于 2012-12-01T15:17:02.377 回答
14

允许跨域请求的现代方法是让服务器使用以下标头响应任何请求:

Access-Control-Allow-Origin: *

这允许来自任何主机的请求,或者可以使用特定主机代替*. 这称为跨域资源共享 (CORS)。不幸的是,较旧的浏览器不支持它,因此在这种情况下,您需要破解浏览器来解决问题(就像评论者所说的可能通过请求图像)。

于 2012-12-01T15:04:10.807 回答
-1

您可以从第三方网站获取代码,但使用它们收集数据受到政策的限制。

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... 

谷歌清楚地展示了跟踪是如何工作的。

于 2015-04-18T06:53:24.480 回答