Tray 是一家电子商务内容管理系统 (CMS) 提供商,在为巴西零售市场提供服务方面拥有超过 20 年的经验。商家可在 Tray's 基础架构上运营网店,该基础架构还提供服务和集成,以便管理商家物流、付款、促销活动和报告。
Tray 是 LWSA 集团的成员,也是电子商务行业的推动力。Tray 深受超过 18 万名客户的信赖,他们在 2024 年第 1 季度共创造了超过 30 亿美元的总交易额 (GMV)。

依赖第三方 Cookie
Tray's 技术架构使用第三方 Cookie (3PC) 为商家网站提供第三方功能,尤其是商家用于商店管理的后台管理控制台。这些 Cookie 对呈现托管在商家网域以外的网域上的第三方应用提供的内容至关重要。Tray's 研究表明,对浏览器处理 3PC 的方式进行的计划性更改可能会破坏此功能。由于 Tray 是许多在线零售商的重要基础架构,因此必须确保业务能够照常进行,即使 Chrome 和其他浏览器处理 3PC 的方式发生重大变化也是如此。
本案例研究详细介绍了 Tray's 发现潜在中断问题、评估潜在解决方案,以及为确保其网站能够顺利改用 3PC 而采取的成功解决方案。
技术架构
微服务
Tray 在其域名 tray.com.br 上托管所有店面和后台应用,商家可以使用 CNAME 从自己的自定义网域提供这些应用。采用这种设置后,买家将只会看到商店的域名,例如 merchant.example。Tray 利用微服务架构提供功能。这种方法使用独立且自包含的应用,每个应用都专注于特定功能。然后,这些微服务会根据其功能分组到镜重:
- 商店:涵盖负责商店功能(例如商品展示、搜索和主题管理)的应用。
- 购买流程:管理购物车、结账流程以及购买历程中的客户互动。
- 商店管理:提供后台应用,用于执行管理、报告和数据导入等任务。
- 集成:协助与外部平台建立关联,以实现跨购物平台商品详情、管理物流等。
后台应用
后台是商店管理中的一款核心应用,可用作卖家在 Tray 上的虚拟商店的中央管理控制台。卖家可以通过此面板执行以下操作:
- 注册商品
- 配置配送和付款方式
- 创建促销活动
- 管理直播
- 监督订单流程
- 监控销售报告
由于后台会将许多微服务(有些由 Tray 运营,有些由第三方运营)汇集到单个界面中,因此它特别容易受到第三方 Cookie 处理方式变更所导致的中断影响。
用于商家自定义的 CNAME
Tray 利用 CNAME 记录来无缝集成店面。
设置新商店时,商家可以设置 CNAME,将请求定向到托管在 Tray's 网域 (tray.com.br) 上的应用。这意味着,当客户访问商家的网站(例如 example.com
)时,CNAME 记录会将他们重定向到 Tray's 网域,同时在地址栏中保留商家的网址。这样一来,用户会获得流畅的体验,内容看起来似乎是直接从商家网站上提供的。
了解 CNAME
CNAME 记录的运作方式与手机上的来电转接类似。假设您给 555-0199 打电话给朋友,但对方没有接听。系统可能会将来电转接到其他号码(例如 555-0100)的语音信箱。不过,作为调用方,您仍然完全不知道此重定向。手机会顺畅地为您接通电话,而语音信箱问候语仍会显示您好友的原始号码 (555-0199)。
CNAME 对网站也适用。当用户访问商家的网站(例如 example.com
)时,CNAME 记录可能会在后台将其请求重定向到其他服务器(例如 assets.example.com
)。但从用户和浏览器的角度来看,所有操作都在 example.com
上进行。地址栏会显示商家的网址,并且用户与该网站互动时,就像内容直接来自该网域一样。
评估可能的中断
Tray's对 3PC 处理的计划更改进行分析后,发现后台应用出现中断。屏蔽 3PC 后,在后端网页中嵌入的 iframe 中从不同网域加载网页时会出现问题。这适用于归公司自有服务所有的内部网域,也适用于开发使用 Tray API 与 Tray 集成的应用的外部合作伙伴。
例如,假设 backoffice.merchant.example
上的某个网页嵌入了由 tray.com.br 和其他第三方托管的内容。由于网域不同,浏览器会将此嵌入内容视为第三方内容,可能会根据任何第三方来源限制对其施加限制。
这种设置可能会导致以下几种问题:
- 会话中断:屏蔽的 3PC 可能会导致受影响的会话中断,从而要求用户多次登录,从而破坏用户体验;或者,由于 iframe 无法正常运行,导致后台页面中断或出现不一致的情况。
- 集成挑战:由于 3PC 限制,使用 Tray's API 与 Tray's 后端集成的合作伙伴应用和内部服务可能会遇到类似的问题。
下图展示了此场景:
- 用户访问托管在
merchant.example
上的后台应用。 - 嵌入式应用位于不同的网域中,有些位于 Tray 拥有的
tray.com.br
中,有些位于第三方供应商网域 (third-party.example
) 中。 - 此网域差异会触发 3PC 限制,可能会导致嵌入式应用出现问题。

分析第三方 Cookie 依赖项和解决方案
测试关键用户历程
Tray's 测试和分析旨在提升网站性能和用户体验,重点关注第三方集成,为未来许多用户不使用 3PC 浏览做好准备。
Tray 使用 Privacy Sandbox Analysis Tool (PSAT) 和 Chrome 开发者工具为客户和商家分析关键用户体验流程。这涉及测试 iframe 中的页面加载情况、检查用户会话是否保持有效,以及确保第三方应用继续按预期运行。测试涵盖了各种用户角色、设备和浏览器(包括 Chrome、Firefox 和 Safari),以找出可能的跨浏览器兼容性问题。Tray 使用 PSAT 和 Chrome 开发者工具对 Cookie 进行分类,并评估其对用户体验的影响。
这项分析对于确保顺畅一致的用户体验至关重要,有助于适应未来可能限制或无法使用第三方 Cookie 的情况。
分析 Privacy Sandbox 解决方案
Storage Access API
虽然 Storage Access API (SAA) 有可能解决 Tray's 中断问题,并且所有主要浏览器都支持它,但出于以下两个主要原因,它并不适合该业务:
- 嵌入的内容只需访问其嵌入来源中的 Cookie,而无需访问多个网站中的相同 Cookie。
- 与 SAA 相关联的浏览器提示并不理想,尤其是在 Cookie 未用于跨网站跟踪用户的情况下。
CHIPS
CHIPS 提供了一款强大的解决方案,可为跨网站嵌入提供出色的用户体验。Partitioned
属性的实现非常简单,对 Chrome 用户的互动没有明显影响。当 Tray 更改其服务时,其他主要浏览器不支持 CHIPS,因此他们选择将自有自营的嵌入内容移至与顶级应用位于同一网站上,以便在各浏览器中提供一致的体验。第三方嵌入内容依赖于 Chrome 中的 CHIPS,并会在其他浏览器中打开新窗口(第一方环境)。不过,自 Tray's 初始实现以来,Firefox 已确认计划很快发布 CHIPS,Safari 也已开始从其技术预览版开始添加对分区属性的支持。
我们认为 CHIPS 是一项优雅的解决方案,很高兴看到它被多个浏览器采用。除了将内容移至第一方网站之外,我们还决定保留 CHIPS 解决方案,以便在所有浏览器采用 CHIPS 之前就支持它们。
- Tray 首席技术官 Takashi Tanaka
浏览器兼容性、W3C 和标准
Chrome 在标准社区中发挥着关键作用。积极参与 W3C 工作组和社区群组(例如 PrivacyCG)对于影响更广泛的浏览器生态系统采用新网络技术至关重要。
Privacy Sandbox 与网络生态系统协同发挥作用,根据行业反馈和互动情况,不断改进 CHIPS 等 API。这种透明且以标准为导向的方法有助于推动其他主要浏览器采用 CHIPS。
永久解决第三方 Cookie 依赖项问题
Tray 支持商家及其客户使用各种类型的设备和浏览器。完全基于 CHIPS 的方法是首选,但我们还进行了其他更改,以支持当时不支持 CHIPS 的其他浏览器。
Tray's 方法用于解决 3PC 不可用时造成的中断问题,涉及两种主要策略。
1. 内部应用
我们更新了完全由我们运营的 Tray 微服务(包括直播商店、直销和账单签发方),以便嵌入内容的来源会继承商家设置的 CNAME。简单来说,嵌入的内容已更新为与嵌入该内容的网页同属第一方,从而确保不会因第三方 Cookie 更改而中断。
2. 第三方应用
对于通过后台访问的第三方应用,Tray 实现了更动态的方法。其工作原理如下:
- 分区属性实现:为受信任的供应商保留了
Partitioned
Cookie 属性的实现,使第三方应用能够在支持 CHIPS 的浏览器上有效设置 Cookie。 - 第三方 Cookie 被屏蔽时:如果用户的浏览器屏蔽了 3PC,第三方应用会在新(第一方)窗口中打开。这样可以避免打开问题,并确保持续运行,即使存在 3PC 限制也是如此。
- 允许使用第三方 Cookie 时:如果用户的浏览器允许使用 3PC,应用会继续像以前一样在 iframe 中打开。
直观呈现解决方案
下图展示了该解决方案。通过继承商店的主网域 (merchant.example
),所有嵌入式应用都似乎来自同一来源。这样一来,所有 widget 彼此之间都是第一方 widget,这意味着第三方限制不起作用。由于所有这些框架彼此之间都是第一方,因此隐私权原则与其他第一方 Cookie 的隐私权原则相同:这些 Cookie 只能在第一方环境中访问,并且会限制潜在的跨网站跟踪。
任何不归 Tray 所有的第三方服务都使用 Partitioned
属性设置 CHIPS Cookie,这意味着这些 Cookie 也只能在设置它们的环境中访问,并限制了跨网站跟踪的可能性。

要点总结
- 没有一种万能的解决方案可以保护 Web 上的隐私;有很多方法可以在保护隐私的同时提供顺畅的用户体验。
- 将资源整合到同一顶级网域后,即使存在第三方 Cookie 限制,Cookie 也能正常运行。
- 与将所有资源迁移到同一顶级网站相比,CHIPS 可能是一种更简单的解决方案。
- Tray's 解决方案持久且适用于各种浏览器。随着越来越多的浏览器支持 CHIPS,它可以被视为适用于 Tray's 等场景的可靠跨浏览器解决方案。