前提条件
我拥有
mysite.com
我不拥有
othersite.com
,但我可以在那里嵌入 javascript 代码
问题
如何将分析数据从
othersite.com
发送到mysite.com
?预期:
othersite.com
客户端 ->mysite.com
服务器不需要:
othersite.com
客户端 ->othersite.com
服务器 ->mysite.com
服务器它的原理看起来和
Google Analytics
类似,但不知 Prop 体原理我知道由于跨域问题,ajax无法完成
如果我拥有
othersite.com
,情况会发生什么变化?如何在没有响应的情况下发送分析数据?
- 例如,
堆分析
发送分析数据但没有响应
- 例如,
最佳答案
Google Analytics(以及我所知道的所有其他 Web 分析工具)的默认方案是通过动态创建具有指向跟踪服务器的源的图像并附加用户数据(例如每个用户的唯一 ID)来跨域传输数据作为图像源的 url 参数。
除了通过图像源发送的所有内容之外,您还将从 http 请求中获取数据(IP 地址、用户代理等)。
对于一个简单的系统,您可以创建一个脚本,在返回(1 像素透明)图像之前将 url 和 http 数据直接存储到数据库。如果您想要可扩展的东西,您可能会将数据写入日志文件并使用一些当前大肆宣传的大数据技术(hadoop、hive 等)进行处理。
在任何情况下,解耦数据收集和处理都是一个好主意,因为这样您可以更轻松地切换跟踪应用程序的组件以获得改进版本,而不会影响系统的其他部分。
发送图像是可靠的,因为它适用于任何浏览器,无需启用任何特殊配置(cors 等)。然而,它很容易被阻止(用户只需阻止像素图像或通过其主机文件将调用重定向到您的服务器)。
如果其他域是您的,您可以
- 通过ajax跟踪
- 直接读取服务器日志或将其传输到您选择的仪表板
如果您没有物理访问服务器的权限,但所有者允许您配置他们的名称服务器,您可以通过跟踪脚本运行所有传入的 http 请求,然后将它们重定向到请求的页面。
我查看了堆分析。他们像其他工具一样发送图像请求:
https://heapanalytics.com/h?a=236035469&u=4184751431615606&v=2274541888&s=3701858993&b=web&z=2&h=%2F&d=heapanalytics.com&t=Heap%20%7C%20Mobile%20and%20Web%20Analytics&r=https%3A%2F%2Fwww.google.de%2F&k=Screen%20Dimensions&k=1050%20x%201680&k=Window%20Width&k=1973&k=Window%20Height&k=1039&tm=1432884624859
它返回http 200响应代码和1像素透明图像,所以它看起来不像它们“在没有响应的情况下跟踪”。
关于javascript - 将分析数据发送到不同的域而没有响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30522981/