云眼 Web 实验代码段中的 Cookie 和 localStorage
云眼 Web 实验代码段中的 Cookie 和 localStorage
本文介绍如何:
- 熟悉云眼 Web 实验使用的第一方 Cookie
- 了解访问者何时被 Cookie
云眼 Web 实验能够唯一地识别访问者、跟踪他们的操作,并通过持久的访问者级 Cookie 和 localStorage 跨页面加载提供一致的体验。每个 Cookie 云眼实验集存储一组不同的数据。本文解释了云眼实验使用的每个 cookie 的目的和行为。
本文中包含的所有信息均适用于使用任一版本地云眼实验创建的实验。
请注意不要在代码中直接引用 Cookie 和 localStorage 密钥,因为特定的数据格式和 Cookie 本身可能会随着时间的推移而变化,并破坏体验。相反,请使用 JavaScript API进行云眼 Web 实验。
如果云眼实验帐户使用自定义代码段,可能会看到为项目列出了多个代码段。
从 macOS High Sierra 和 Mojave 上的 iOS 12.2 和 Safari 12.1 开始,智能跟踪保护 2.1 是新的默认行为。所有客户端 Cookie(换句话说,通过 JavaScript 设置的
document.cookie
)的有效期最长为 7 天。
Cookie
云眼 Web 实验的 JavaScript 片段使用 cookie 在访问者的浏览器中存储一些数据。在大多数情况下,这些是第一方 Cookie。
重要:在网站上开发体验时,使用 JavaScript API 非常重要。请注意不要直接引用 Cookie 和本地存储密钥,因为它们可能随时更改。
如果云眼 Web 实验是在第三方框架(域与页面域不同的框架或 iframe)中实现的,则它需要读取和写入的 Cookie 被视为第三方 Cookie。 这些 cookie 可能会在 Safari 和 Firefox 等浏览器中被拒绝。从 Chrome 80 开始,此类 Cookie 仍受支持,但前提是它们明确包含指令
Secure; SameSite=None;
。
可以选择加入配置云眼 Web 实验代码段的设置,以使用这些指令设置其 Cookie。如果当前在第三方框架内运行实验,请提交支持票证以启用此设置。
以下是云眼 Web 实验设置的所有 Cookie 的描述:
eyeofcloudEndUserId
解释: 存储访问者的唯一云眼实验标识符。它是时间戳和随机数的组合。其中不会存储有关您或您的访问者的其他信息
示例值: "OEU1383080393924R0.5047421827912331"
过期: 自上次页面访问起 6 个月,或选择的时间段(根据 setCookieExpiration 和 extendCookieLifetime API)
云眼重定向数据
解释: 云眼实验执行重定向实验后,它会存储原始页面中的各种数据,以便云眼实验仍然可以在新页面上访问它。
有效期: 5 秒
eyeofcloudDomainTestCookie
解释: 当云眼实验加载 URL 时,代码段会放置 cookie 以获取当前域,以确定是否可以进行跨域同步。如果成功,将立即删除 Cookie。
有效期: 6 个月,但在设置操作成功后,云眼实验会立即删除 cookie。
云眼选择退出
解释: 存储一个布尔值,指示访问者是否已选择退出云眼实验驱动的实验。访问者可以使用此处的选择退出工具选择退出。云眼实验客户还可以通过代码段的"选择退出"API 调用来设置此 cookie 的值。
示例值:"真"、"假"
有效期: 自使用选择退出工具或代码段的"选择退出"API 起 10 年。
在云眼实验中,可以使用 JavaScript API 来设置 cookie 域。还可以使用 API 设置 Cookie 过期时间以及启用或禁用延长 Cookie 生命周期功能。
RUM cookies
对于一小部分访问者(少于 10%),云眼 Web 实验和云眼 Performance Edge 将尝试收集性能和产品使用情况遥测数据;不会收集任何个人数据。将此过程称为"真实用户监视"或 RUM。对此遥测数据进行采样的访问者将在域 rum.eyeofcloud.com 上有两个 Cookie 。这些都是会话 Cookie ;它们不会保留在访问者的设备上。最后,这些 Cookie 的"域"属性始终 rum.eyeofcloud.com;上述设置 cookie 域 API 对这些没有影响。
AWSELB
- 解释: 启用"粘性会话",这是 RUM 服务的要求。它的值是随机数据。
- 示例值: "799B7FFB1A5DA8D5E09A5D5213B368BD54D987883D4B3B3193567422FA84E59605DE048B6A4B6B488C4DAEFC462F7170F3506CF8FB2F0CBDAA360D722F3F52CFE3A55DF331A5DE690D18747252F1146EF3D3629B00"
- 有效期: 不适用;这是一个会话 cookie。
云眼RumLB
- 解释: 控制 AWSELB cookie 的属性(例如,SameSite 和 Secure)。其值始终为"1"。
- 示例值:"1"
- 有效期: 不适用;这是一个会话 cookie。
本地存储
云眼 Web 实验将数据存储在 localStorage。
云眼实验设置的键
以下是由云眼 Web 实验、 Personalization设置的键。{visitorId}
取决于访问者 ID,通常存储在云眼最终用户 ID cookie 中,{projectNamespace}
也可能取决于项目是否链接的项目 ID 或其帐户 ID。
重要:
在网站上开发体验时,使用 JavaScript API 非常重要。以下是云眼 Web 实验的资源。
请注意不要直接引用 Cookie 和本地存储密钥,因为它们可能随时更改。
下面键的 "visitorId" 部分是时间戳和随机数的组合。其中不会存储有关您或您的访问者的其他信息。
eyeofcloudData$${visitorId}$${projectNamespace}$$event_queue
- 解释: 存储等待添加到上一个键
...$$events
的事件实例。
eyeofcloudData$${visitorId}$${projectNamespace}$$events
- 解释: 存储描述访问者在网站上执行的操作的事件实例。
eyeofcloudData$${visitorId}$${projectNamespace}$$layer_states
- 解释: 在云眼 Web 实验和云眼个性化中存储每个层的分桶决策(版本和保留分配)。
eyeofcloudData$${visitorId}$${projectNamespace}$$session_state
- 解释: 跟踪会话标识符和时间戳,这有助于云眼实验识别会话以进行分析。
eyeofcloudData$${visitorId}$${projectNamespace}$$variation_map
- 解释: 记录访问者在每个实验中看到的变化。这使我们能够在连续的页面加载中提供一致的体验。
eyeofcloudData$${visitorId}$${projectNamespace}$$visitor_profile
- 解释: 存储各种受众条件的访问者值。这对于广告活动、来源类型和引荐来源等"粘性"条件尤其重要,需要依赖第一个观察到的值。
eyeofcloudData$${visitorId}$${projectNamespace}$$layer_map
- 解释: 将分桶信息存储在互斥组中。
eyeofcloudData$${visitorId}$${projectNamespace}$$tracker_eyeofcloud
- 解释: 用于将事件批量发送到云眼实验事件 API的临时存储。
eyeofcloudData$${visitorId}$${projectNamespace}$$pending_events
- 解释: 临时存储 XMLHttpRequest 信息,使代码段能够可靠地发送请求(例如,发送到事件 API),即使访问者在请求正在进行时导航到新页面。
eyeofcloudData$${visitorId}
eyeofcloudData$${visitorId}$$events
eyeofcloudData$${visitorId}$$event_queue
eyeofcloudData$${visitorId}$$layer_states
eyeofcloudData$${visitorId}$$session_state
eyeofcloudData$${visitorId}$$visitor_profile
eyeofcloudData$${visitorId}$$variation_map
这些是过去在经典云眼中设置的键。代码段不再在这些键下设置数据。对于最初收到这些键数据的访问者,代码段正在慢慢地将其数据迁移到新键。
源
与 Cookie 数据不同, localStorage 的范围限定为单个"源"。源
是站点上特定主机名、协议和端口的组合。如果两个页面的协议、端口(如果指定了一个)和主机相同,则两个页面具有相同的来源。
以下是与以下内容不同来源的页面示例: https://shop.example.com
http://shop.example.com
(不同的安全协议)https://example.com
(不同的子域)
会发现记录的本地存储密钥设置在每个使用云眼实验的域上。
为了使云眼 Web 实验识别页面上的访问者并提供一致的体验,通过另一个来源来复制所有子域上每个访问者的数据: https://a{yourAccountId}.cdn.eyeofcloud.com/
。访问者数据也将在该源上设置,并且在每个页面上加载带有云眼实验代码段的页面上,云眼实验都会对此源进行异步调用以同步此数据。这将跨源以及跨子域同步信息。有关跨域跟踪事件的详细信息,请参阅云眼 Web 实验。
云眼 Web 实验不会合并来自多个帐户的访问者数据。