借助 Shared Storage API,网站可以存储和访问不受顶级网站隔离的数据。这样一来,我们便可在尊重用户隐私的同时,实现并促进跨网站使用情形。
虽然 Chrome 具有分区存储功能,并且即将推出新的用户体验,让用户能够更加明智、灵活地选择是否使用第三方 Cookie,但仍有许多正当的使用场景依赖于未分区的存储,如果没有新的 Web API 的帮助,这些场景将无法实现。例如,内容制作方可能希望衡量内容在不同网站上的覆盖面,而无需依赖跨网站标识符。Shared Storage API 提供了一种更私密的机制来跨网站存储和访问未分区的数据,从而满足这一需求。
什么是 Shared Storage API?
Shared Storage API 是一种通用存储设施,旨在实现保护隐私的跨网站用例。Shared Storage 具有与 localStorage 和 sessionStorage API 类似的功能,是一种键值对存储,可随时在其中写入数据。与其他 Web Storage API 不同,Shared Storage 数据可以在不同的顶级网站之间共享;不过,Shared Storage 数据只能从安全环境中读取,并且只能使用受限的输出 API 输出。
在上图中,shoes.example 网站可以嵌入到其他发布商网站(例如 news.example),并且仍然可以访问相同的数据。
此 Shared Storage 功能可实现跨网站功能,同时通过防止跟踪单个网站访问者和限制数据访问来提升用户隐私保护水平。数据只能在输出功能有限的安全环境(工作单元)中访问。
Shared Storage 是少量输出 API 的底层存储基础设施。Output API 是使用共享存储空间数据的唯一方式。输出 API 包括:
- 选择网址:根据存储的数据从提供的列表中选择一个网址,然后在围栏框架中呈现相应内容。
- Private Aggregation: 通过 Private Aggregation API 发送跨网站数据,以生成摘要报告。
为什么需要 Shared Storage?
Shared Storage API 是一种灵活的存储机制,Web 开发者可以将其与输出 API 结合使用,以解决许多使用场景,包括取代第三方 Cookie 的多种现有用途。如需详细了解输出 API 的潜在用例,请参阅 Select 网址 和 Private Aggregation。
贵公司是否在寻找尚未解决的跨网站存储解决方案?您可以分享自己的使用情形,并在开源的 Shared Storage GitHub 代码库中创建问题。
与 Shared Storage 兼容的输出 API 和用例
| 输出 API | 使用场景 | 说明 |
|---|---|---|
| 选择网址 | 轮播广告素材 | 您可以存储广告素材 ID、观看次数和用户互动等数据,以确定用户在不同网站上看到的广告素材。这样一来,您就可以平衡观看次数,避免某些内容过度饱和,从而避免可能出现的负面用户体验。 |
| 选择网址 | 运行 A/B 测试 | A/B 测试会比较配置的两个或多个版本,以确定哪个版本的表现最好。您可以将用户分配给实验组,然后将该组存储在共享存储空间中,以便跨网站访问。 |
| 选择网址 | 为已知客户自定义用户体验 | 您可以根据用户的注册状态或其他用户状态分享自定义内容和号召性用语。 |
| 选择网址、 私密汇总 | 反滥用缓解措施 | 反滥用、反欺诈和网络安全组织通常使用专有技术来检测恶意用户,无论是试图造成损害的自动化机器人还是真人用户。在此使用情形下,您可以测试许多不同的策略,无论是使用 Select 网址 API 对用户可信度评分进行编码,还是使用 Private Aggregation API 构建用于异常检测的数据集。 |
| 私密聚合 | 衡量覆盖的唯一身份用户数 | 许多内容制作者和广告客户经常想知道有多少唯一身份的用户查看了他们展示的内容。您可以使用共享存储空间来报告用户首次看到您的广告、嵌入式视频或发布内容的时间。您可以防止在不同网站上重复统计同一用户,并生成汇总的含噪报告,以了解大致的唯一身份内容覆盖面。 |
| 私密聚合 | 衡量用户受众特征 | 内容制作者渴望了解其受众群体的受众特征。借助 Shared Storage,您可以在第一方网站上捕获用户的人口统计数据,并利用汇总报告在各种其他平台(例如嵌入式内容)上分析这些信息。 |
| 私密聚合 | 衡量 K+ 频次覆盖面 | 有时称为“有效频次”,是指用户在识别或回忆起特定内容(通常是在观看广告的情况下)之前,需要观看的最低次数。您可以使用共享存储空间来生成报告,其中包含至少 K 次看过某内容的不重复用户。 |
共享存储空间的工作原理是什么?
借助共享存储空间,您可以根据跨网站数据做出明智的决策,而无需与嵌入网站共享用户的信息(例如浏览器历史记录或其他个人详细信息),也无需将数据泄露到您自己的服务器。
您可以随时写入共享存储空间,但只能在安全环境(称为“微程序”)中读取共享存储空间值。
您可以在共享存储空间 worklet 中添加业务逻辑,然后从共享存储空间读取和处理值,而无需直接将确切的值返回给 worklet 调用方。您可以使用 Private Aggregation API 或 Select 网址 Output API 从工作单元中提取信息。随着新使用情形的报告,可能会有更多输出 API 可供使用。
API 状态
Shared Storage API 已正式发布。按照说明注册 Privacy Sandbox,以便使用该 API 或启用本地开发。
| 提案 | 状态 |
|---|---|
| 允许从响应标头写入 说明 GitHub 问题 |
适用于 M124。可以在 M119-M123 中手动启用 |
| 使用开发者工具调试共享存储空间 Worklet 部分 |
在 M120 中提供 |
| 将共享存储空间数据存储空间上限更新为 5MB 说明 |
适用于 M124 |
createWorklet(),用于创建不使用 iframe 的跨源 worklet |
在 M125 中提供 |
允许在 addModule() 中使用跨源脚本,并使 createWorklet() 与该行为保持一致 |
适用于 M130 |
| 允许共享存储空间 Worklet 读取兴趣群组 说明 |
适用于 M134 |
createWorklet()中对自定义数据源的支持 说明 |
适用于 M135 |
| 使用 DevTools 调试共享存储空间 Worklet 说明 GitHub 问题 |
预计 2025 年第 2 季度推出 |
Engage and share feedback
Note that the Shared Storage API proposal is under active discussion and development and therefore subject to change.
We're eager to hear your thoughts on the Shared Storage API.
- Proposal: Review the detailed proposal.
- Discussion: Join the ongoing discussion to ask questions and share your insights.