javascript - 将分析数据发送到不同的域而没有响应

标签 javascript jquery google-analytics cross-domain analytics

前提条件

  1. 我拥有 mysite.com

  2. 我不拥有 othersite.com,但我可以在那里嵌入 javascript 代码

<小时/>

问题

  1. 如何将分析数据从 othersite.com 发送到 mysite.com

    • 预期:othersite.com 客户端 -> mysite.com 服务器

    • 不需要:othersite.com 客户端 -> othersite.com 服务器 -> mysite.com 服务器

    • 它的原理看起来和Google Analytics类似,但不知 Prop 体原理

    • 我知道由于跨域问题,ajax无法完成

  2. 如果我拥有 othersite.com,情况会发生什么变化?

  3. 如何在没有响应的情况下发送分析数据?

    • 例如,堆分析发送分析数据但没有响应

最佳答案

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/

相关文章:

javascript - 连接到数据库的复选框的子复选框

javascript - 如何在外部单击关闭此菜单?

google-analytics - 如何在谷歌分析中显示任何 jstree 的数量

php - 使用 javascript 在 php 中保留 html post 数据

javascript - 自定义 Javascript 变量的问题

javascript - Google Analytics Enhanced Ecommerce Tracking/Analytics 无法通过 GTM 工作

javascript - 如何获取数字形式的值并将其转换为字符串javascript

javascript - Openlayers 3 坐标错误

java - android.os.Process.killProcess(android.os.Process.myPid()) 中的错误;

jquery - 我应该避免在 Chrome 扩展的内容脚本中使用 jQuery 吗?