fenced frames 是 chrome 主导的实验性隐私沙箱机制,通过隔离第三方内容(如广告)实现无用户标识的数据交互,需 chrome v116+、origin trial 与配套 api 支持,尚未被 firefox、safari 支持。

Fenced Frames 是 HTML5 中一项仍在演进的隐私保护机制,目标是在不泄露用户身份、浏览历史或上下文信息的前提下,安全地嵌入第三方定制内容(如广告、推荐模块、社交插件等)。它并非已广泛支持的标准功能,而是作为 Privacy Sandbox 计划的一部分,由 Chrome 主导推进,目前处于实验性阶段(截至 2024 年仍需手动启用或依赖 Origin Trial),且尚未被 Firefox、Safari 等主流浏览器支持。
理解 FencedFrame 的核心设计逻辑
FencedFrame 本质是一个“隔离沙箱”式的 iframe 替代方案:它不允许嵌入页面(父文档)与其中内容(第三方帧)进行直接脚本通信(如 postMessage、window.parent)、无法读取其 DOM、无法访问 Cookie 或存储 API,甚至 URL 不会暴露在地址栏中。所有交互必须通过受限、声明式、隐私优先的接口完成,例如:
- 仅允许通过
<fencedframe></fencedframe>标签以src属性加载一个由 可验证的、无状态的广告/内容服务端点 返回的响应(通常为urn:uuid:...或特定前缀的 opaque URL); - 内容源必须提前注册在 Shared Storage 或通过 Protected Audience API 等配套机制完成出价与匹配,整个流程不传递用户标识符(如 IDFA、GAID、登录态);
- 渲染结果仅以位图形式“输出”,父页面无法测量其尺寸变化、监听点击事件细节,也无法获取是否加载成功等状态——除非使用标准化的、聚合的、带噪声的报告 API(如 Attribution Reporting API)。
当前实际使用的前提条件
想在项目中尝试 FencedFrame,需满足以下现实约束:
- 目标用户主要使用 Chrome(v116+),且已启用
#fenced-frame实验标志,或你已申请并集成有效的 Origin Trial Token; - 第三方内容提供方(如广告平台)已升级后端,支持返回符合 Fenced Frame Response Format 的 HTML 文档(含
Permissions-Policy: fenced-frame *响应头,并禁用所有非必要权限); - 你的主站已完成隐私合规改造:停用第三方 Cookie、移除跨站脚本注入、采用 CHIPS(Cookie Having Independent Partitioned State)管理第一方 Cookie;
- 放弃对“精准曝光归因”“实时点击反馈”“动态尺寸适配”等传统 iframe 能力的依赖——FencedFrame 的价值在于“可审计的隔离”,而非灵活性。
一个最小可行示例(仅限 Chrome 实验环境)
以下代码仅作概念演示,生产环境不可直接使用:
<fencedframe src="https://ad.example.com/render?k=abc123" width="300" height="250"></fencedframe>替代方案与务实建议
鉴于 FencedFrame 尚未落地,现阶段更可行的隐私友好实践包括:
- 用标准
<iframe sandbox="allow-scripts" referrerpolicy="no-referrer"></iframe>+SameSite=LaxCookie + 第一方代理中转请求,控制数据流向; - 采用 Private Aggregation API 替代客户端日志上报,实现群体级效果分析;
- 将第三方内容“静态化”:由服务端预取、脱敏、缓存后以内联 HTML 或 JSON 注入,完全规避跨源执行;
- 优先选择已承诺遵守 TCF v2 或 USP API 的合规供应商,并通过 Consent Management Platform(CMP)统一管控授权状态。
不复杂但容易忽略:FencedFrame 不是“开箱即用的隐私开关”,而是整套隐私优先架构中的一环。真正起作用的是背后的内容分发协议、服务端决策逻辑和浏览器策略协同。盲目引入反而可能因兼容问题损害用户体验或埋下合规风险。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











