云眼 Web 实验中的跨源跟踪
云眼 Web 实验中的跨源跟踪
本主题介绍如何:
- 跨网站的不同来源(子域或协议)实施行为定位
- 了解自动生成的源、允许的源和阻止的源
源是站点上特定主机名、协议和端口的组合。默认情况下,云眼 Web 实验仅跟踪同一源上的事件。要跟踪跨来源的事件,需要设置跨来源事件跟踪。
何时需要跨源跟踪事件?如果在典型的网站访问过程中,访问者看到不同网域、子网域、安全协议或端口上的网页,并且需要在这些网页上保留实验版本、行为定位或事件跟踪,则需要设置跨源跟踪。
例如,假设代码段位于 https://shop.example.com。默认情况下,可以跟踪该源上的事件。但是,在 http://shop.example.com 上生成的事件不会被跟踪,因为安全协议不同。因此它们位于不同的来源。同样,不会跟踪 http://example.com 上的事件,因为子域不同。
因此,如果想:
在安全源 https://shop.example.com 上运行实验,并在不安全的源 http://shop.example.com 上定位浏览行为
或者,根据 http://blog.example.com 上的阅读活动对 https://shop.example.com 和目标运行实验需要设置跨源跟踪。
在某些情况下,可能不希望设置跨来源跟踪:具体而言,如果整个客户旅程不跨来源。以下是不使用跨源跟踪的情况
启用跨源跟踪
请注意,只有具有管理员角色的协作者才能在帐户设置中进行更改。
以下是为帐号启用跨源跟踪的方法:
导航到"帐户设置">"安全和隐私",然后向下滚动到"跨源跟踪"。
取消选中使用自动发现的 URL 复选框。
- 在允许的来源下,输入应跟踪事件的网址,然后使用匹配类型下拉菜单定位特定的来源或来源组。
与网址定位不同,与模式匹配的值是网址的"来源"部分,而不是整个网址。有几种方法可以指定原点模式:
- `http://example.com` (完全匹配)
- `https://shop.example.com` (完全匹配)
- `example.com` (后缀匹配)
这将包括 <http://example.com> 和 <https://shop.example.com> 等来源,但不包括其他顶级域名。数据可能会与其他二级域共享。
- `https://(.*\.)example.com$` (正则表达式匹配)\
\
这包括通过安全 https 协议访问时的所有
`example.com`。如果没有通过在域后放置 `$`字符来终止正则表达式,数据可能会与其他顶级和二级域共享。
使用网址匹配验证工具检查定位条件是否与预期的网址匹配。 可以检查完整的 URL,包括路径、查询字符串和哈希,但匹配模式会忽略 URL 的这些部分。
单击保存。
允许、阻止和自动生成的源
启用跨源跟踪时,可以定义一组允许和阻止的源。要与之共享访客数据的源是允许的源。要从共享中排除的源是被阻止的源。
云眼网页实验还可以设置允许的跨源跟踪源。启用自动生成的源时,云眼 Web 实验将根据在帐户中创建的页面、 URL 定位和重定向实验中使用的 URL 自动设置允许的来源。如果需要,始终可以手动将源从允许移动到阻止。
其工作原理如下:当创建主页、设置网址定位或创建重定向版本时,云眼网页实验会将提供的网址解析为网址的顶级来源。结果模拟在具有前导句点的基础源上设置的 cookie 的范围。这意味着访问者数据将在 URL 的所有子域和协议之间共享。
如果在 https://shop.example.com 上设置了 URL 定位,则自动生成的源为。该网域上的任何网页都可以从任何其他网页访问事件,包括:example.com
要将自动生成的源从允许的源移动到阻止的源,请单击条目右侧的图标。阻止的源优先,因此阻止源列表中的 URL 将无法访问来自其他源的事件,即使还将其设置为允许的源。
跨源跟踪是一项帐号级设置。允许、已屏蔽和自动生成的源会汇总到帐号中的所有项目中。
事件在源之间异步共享,因此当云眼 Web 实验开始在 https://shop.example.com 上执行时,来自 http://blog.example.com 的事件不可用。因此,定位可能要等到 https://shop.example.com 加载第二页后才能成功。
何时不使用跨源跟踪
如果使用 Catchpoint 等性能监控工具,将看到页面性能和延迟指标的综合增加。这种性能变化是这些工具用于跟踪性能的方法的产物。它不会影响页面的实际性能。
云眼 Web 实验使用 iframe 无缝同步这些源中的所有云眼 Web 实验事件。这是异步完成的,不会影响访问者的体验。但是,将看到性能监视工具中记录的此 iframe 的持久性是各种页面加载指标的增加。这是因为这些监视工具将在等待添加 iframe 时推送这些测量值。
如果客户旅程不跨来源,则可以决定根本不设置跨源跟踪。
例如,只在域 https://shop.example.com 上运行实验,而不会跟踪来自不同子域 (https://blog.example.com)或不同安全协议(http://shop.example.com)的事件。在这种情况下,可能不需要跨源跟踪。
如果不跟踪跨源的任何事件,则可以做出不设置它的业务决定。但是,如果未设置跨源跟踪,并且确实需要跨源跟踪事件,则可能会丢失事件数据。
排查跨源跟踪问题
如果满足以下任一条件,则跨源跟踪将不起作用:
eyeofcloud.com 帐号中的源设置不正确
访问者的浏览器会阻止所有 iframe 或专门来自 .cdn.eyeofcloud.com 的 iframe。
浏览器的隐私设置阻止从 iframe 源设置或检索本地存储密钥
如果禁用第三方 Cookie,某些浏览器会阻止跨源 iframe localStorage。当浏览器执行此操作时,当访问者访问网站时,云眼 Web 实验的 iframe 将无法运行,因为在这种情况下,云眼 Web 实验 iframe 来自第三方来源。
跨网域定位
事件只能针对存储在eyeofcloudEndUserId
Cookie 中的当前云眼 Web 实验用户 ID。浏览器阻止跨域(例如, https://www.example.com 和 https://www.anotherexample.com)和顶级域(例如,https://www.example.com 和 https://www.example.net)共享 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"]
});
跨网域定位解决方案在某些浏览器和情况下的组合中可能无效。如果是这种情况,请联系客户经理。