云眼 Web 实验中的跨源跟踪

云眼About 7 min

云眼 Web 实验中的跨源跟踪

本主题介绍如何:

  • 跨网站的不同来源(子域或协议)实施行为定位
  • 了解自动生成的源、允许的源和阻止的源

是站点上特定主机名、协议和端口的组合。默认情况下,云眼 Web 实验仅跟踪同一源上的事件。要跟踪跨来源的事件,需要设置跨来源事件跟踪。

何时需要跨源跟踪事件?如果在典型的网站访问过程中,访问者看到不同网域、子网域安全协议端口上的网页,并且需要在这些网页上保留实验版本行为定位或事件跟踪,则需要设置跨源跟踪

例如,假设代码段位于 https://shop.example.comopen in new window。默认情况下,可以跟踪该源上的事件。但是,在 http://shop.example.comopen in new window 上生成的事件不会被跟踪,因为安全协议不同。因此它们位于不同的来源。同样,不会跟踪 http://example.comopen in new window 上的事件,因为子域不同。

因此,如果想:

在某些情况下,可能不希望设置跨来源跟踪:具体而言,如果整个客户旅程不跨来源。以下是不使用跨源跟踪的情况

启用跨源跟踪

请注意,只有具有管理员角色的协作者才能在帐户设置中进行更改。

以下是为帐号启用跨源跟踪的方法:

  1. 导航到"帐户设置">"安全和隐私",然后向下滚动到"跨源跟踪"。

  2. 取消选中使用自动发现的 URL 复选框。

  1. 允许的来源下,输入应跟踪事件的网址,然后使用匹配类型下拉菜单定位特定的来源或来源组。
与网址定位不同,与模式匹配的值是网址的"来源"部分,而不是整个网址。有几种方法可以指定原点模式:

-   `http://example.com` (完全匹配)

-   `https://shop.example.com` (完全匹配)

-   `example.com` (后缀匹配)

    这将包括 <http://example.com> 和 <https://shop.example.com> 等来源,但不包括其他顶级域名。数据可能会与其他二级域共享。

-   `https://(.*\.)example.com$` (正则表达式匹配)\
    \
    这包括通过安全 https 协议访问时的所有
    `example.com`。如果没有通过在域后放置 `$`字符来终止正则表达式,数据可能会与其他顶级和二级域共享。
  1. 使用网址匹配验证工具检查定位条件是否与预期的网址匹配。 可以检查完整的 URL,包括路径、查询字符串和哈希,但匹配模式会忽略 URL 的这些部分。

  2. 单击保存

允许、阻止和自动生成的源

启用跨源跟踪时,可以定义一组允许和阻止的源。要与之共享访客数据的源是允许的源。要从共享中排除的源是被阻止的源。

云眼网页实验还可以设置允许的跨源跟踪源。启用自动生成的源时,云眼 Web 实验将根据在帐户中创建的页面、 URL 定位和重定向实验中使用的 URL 自动设置允许的来源。如果需要,始终可以手动将源从允许移动到阻止。

其工作原理如下:当创建主页、设置网址定位或创建重定向版本时,云眼网页实验会将提供的网址解析为网址的顶级来源。结果模拟在具有前导句点的基础源上设置的 cookie 的范围。这意味着访问者数据将在 URL 的所有子域和协议之间共享。

如果在 https://shop.example.comopen in new window 上设置了 URL 定位,则自动生成的源为。该网域上的任何网页都可以从任何其他网页访问事件,包括:example.com

要将自动生成的源从允许的源移动到阻止的源,请单击条目右侧的图标。阻止的源优先,因此阻止源列表中的 URL 将无法访问来自其他源的事件,即使还将其设置为允许的源。

跨源跟踪是一项帐号级设置。允许、已屏蔽和自动生成的源会汇总到帐号中的所有项目中。

事件在源之间异步共享,因此当云眼 Web 实验开始在 https://shop.example.comopen in new window 上执行时,来自 http://blog.example.comopen in new window 的事件不可用。因此,定位可能要等到 https://shop.example.comopen in new window 加载第二页后才能成功。

何时不使用跨源跟踪

如果使用 Catchpoint 等性能监控工具,将看到页面性能和延迟指标的综合增加。这种性能变化是这些工具用于跟踪性能的方法的产物。它不会影响页面的实际性能。

云眼 Web 实验使用 iframe 无缝同步这些源中的所有云眼 Web 实验事件。这是异步完成的,不会影响访问者的体验。但是,将看到性能监视工具中记录的此 iframe 的持久性是各种页面加载指标的增加。这是因为这些监视工具将在等待添加 iframe 时推送这些测量值。

如果客户旅程不跨来源,则可以决定根本不设置跨源跟踪。

例如,只在域 https://shop.example.comopen in new window 上运行实验,而不会跟踪来自不同子域 (https://blog.example.comopen in new window)或不同安全协议(http://shop.example.comopen in new window)的事件。在这种情况下,可能不需要跨源跟踪。

如果不跟踪跨源的任何事件,则可以做出不设置它的业务决定。但是,如果未设置跨源跟踪,并且确实需要跨源跟踪事件,则可能会丢失事件数据。

排查跨源跟踪问题

如果满足以下任一条件,则跨源跟踪将不起作用:

  • eyeofcloud.comopen in new window 帐号中的源设置不正确

  • 访问者的浏览器会阻止所有 iframe 或专门来自 .cdn.eyeofcloud.com 的 iframe。

  • 浏览器的隐私设置阻止从 iframe 源设置或检索本地存储密钥

如果禁用第三方 Cookie,某些浏览器会阻止跨源 iframe localStorage。当浏览器执行此操作时,当访问者访问网站时,云眼 Web 实验的 iframe 将无法运行,因为在这种情况下,云眼 Web 实验 iframe 来自第三方来源。

跨网域定位

事件只能针对存储在eyeofcloudEndUserId Cookie 中的当前云眼 Web 实验用户 ID。浏览器阻止跨域(例如, https://www.example.comopen in new windowhttps://www.anotherexample.comopen in new window)和顶级域(例如,https://www.example.comopen in new windowhttps://www.example.netopen in new window)共享 Cookie。

这意味着云眼 Web 实验无法在此类域中设置一致的用户 ID。要使跨网域定位正常工作,必须使用其他方式在网域之间手动同步 eyeofcloudEndUserId Cookie。建议使用 waitForOriginSync 函数,只要链接两个代码片段(项目)并因此使用相同的 localStorage 命名空间。不一定需要在两个域中使用相同的代码段。

例如,可以在云眼 Web 实验片段之前的 head 标记或 Project Javascript 中执行以下代码:

{.brush: .jscript; .collapse: .false; .first-line: .1; .gutter: .true; .ruler: .false; .toolbar: .true; .wrap-lines: .true;}
// ensures the eyeofcloud object is defined globally
window.eyeofcloud = window.eyeofcloud || [];

// set the waitForOriginSync API call
// place your own domains in the canonicalOrigins array
window.eyeofcloud.push({
  "type": "waitForOriginSync",
  "canonicalOrigins": ["eyeofcloud.com", "developers.eyeofcloud.com"]
});

跨网域定位解决方案在某些浏览器和情况下的组合中可能无效。如果是这种情况,请联系客户经理。

Last update:
Contributors: zhangweixue,“zhangweixue”