我有一个项目的想法,涉及一个 Javascript 终端,利用指定的 PHP 脚本作为服务器来执行远程功能。我知道同源政策将成为这样一个项目的障碍,但看看我每天使用的谷歌分析,似乎他们有办法大规模避免这个问题。
Google Analytics、Google AdWords 和几乎所有其他分析/网络营销平台都使用
<img>
标签。
他们加载他们的 JS 程序,这些程序处理你在页面上放置的任何跟踪,然后他们创建一个图像并将图像的源设置为等于他们服务器的域是什么,并将所有跟踪信息添加到查询中字符串。
关键在于它如何到达那里并不重要:
服务器只关心被调用的 URL 内部的数据,而客户端只关心对特定 URL 的调用,而不关心获取任何返回值。
因此,很多年前就有人选择了
<img>
,从那时起公司就一直在使用它。
允许跨域请求的现代方法是服务器使用以下标头响应任何请求:
Access-Control-Allow-Origin: *
这允许来自任何主机的请求,或者可以使用特定主机代替
*
。 这称为跨源资源共享 (CORS)。 不幸的是,旧版浏览器不支持它,因此在这种情况下,您需要一些技巧来解决浏览器问题(就像评论者所说的,也许可以通过请求图像来实现)。
您可以从第三方网站获取代码,但通过第三方网站收集数据受到政策的限制。
Google 使用第一个组织站点嵌入的“_gaq”函数数组收集数据,然后 Google 将收集到的数据嵌入到 http 请求参数中发送。
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...