为什么JavaScript跟踪器使用img标记而不是XMLHttpRequest?

为什么JavaScript跟踪器使用img标记而不是XMLHttpRequest?,javascript,analytics,Javascript,Analytics,我正在尝试构建一个javascript分析跟踪器,比如google analytics。我试图研究其他一些实现的源代码,他们使用img或script标记来调用API后端进行跟踪 我想知道他们为什么不使用XMLHttpRequest发出请求?我的猜测是为了避免被反追踪者拦截,但不确定 有人知道吗?有几个原因: 传统:例如Google Analytics最初创建于“像素”跟踪是前端分析的事实标准时 浏览器兼容性:和的实现在所有浏览器中都是相同的(只需添加标记),而XMLHttpRequest与旧浏

我正在尝试构建一个javascript分析跟踪器,比如google analytics。我试图研究其他一些实现的源代码,他们使用
img
script
标记来调用API后端进行跟踪

我想知道他们为什么不使用
XMLHttpRequest
发出请求?我的猜测是为了避免被反追踪者拦截,但不确定

有人知道吗?

有几个原因:

  • 传统:例如Google Analytics最初创建于“像素”跟踪是前端分析的事实标准时

  • 浏览器兼容性
    的实现在所有浏览器中都是相同的(只需添加标记),而
    XMLHttpRequest
    与旧浏览器的情况不同

  • 易实现性:只需添加
    就可以了,使用
    XMLHttpRequest
    您实际上需要编写一些代码

  • 健壮性/防止阻塞
    很难被检测为与广告/跟踪相关,因为从另一个域加载具有复杂URL的图像实际上是常见的做法(例如,考虑CDN)

  • 网络/电子邮件跨平台:您可以使用
    实现电子邮件跟踪,但不能使用
    (出于安全原因被阻止)

  • JavaScript支持:禁用JS后,像素跟踪仍然有效


这不是因为它对每个人来说都更容易吗?图像更难阻止它在禁用JavaScript的情况下工作。@TsvetanGanev这对于类似电子邮件的情况是正确的。这里的img标签是通过JavaScript添加的。您还可以使用图像或iFrame与多个域共享cookie。在后端具有用户标识cookie。此外,与XHR相比,插件更难检测和阻止图像。我已经读到了js被禁用的情况下它可以工作。。如果您正在动态收集数据并将其放入图像源中,则不会出现这种情况,但您可以手动将图像添加到noscript标记中,该标记会向后端显示用户已禁用js,并且后端仍然会识别该用户。