发布时间:2025 年 5 月 1 日
从 Chrome 137 开始,文档隔离政策是一项新功能,可简化crossOriginIsolation 的采用。与 COEP (Cross-Origin-Embedder-Policy) 不同,文档隔离政策适用于每个帧,并且对子帧没有任何要求。通过启用 crossOriginIsolation
,文档隔离政策可解锁对强大的 Web 功能(例如 SharedArrayBuffers 或 WebAssembly 线程)的访问权限。
什么是跨源隔离?
跨源隔离会在浏览器进程中为文档及其同源亲属划定坚固的边界。这会阻止系统对文档进行分组,并可能阻止文档与来自不同来源的文档共享资源或信息。跨源隔离通过确保源在其自己的进程中加载来实现这一点,而无论底层浏览器引擎对网站隔离或跨源隔离的支持状态如何(默认情况下)。这有助于防范推测性执行攻击,例如 Spectre。
什么是“文档隔离”政策?
与 COOP (Cross-Origin-Opener-Policy) 和 COEP (Cross-Origin-Embedder-Policy) 相比,文档隔离政策提供了一种更简单的方法来实现 crossOriginIsolation。它支持按帧进行隔离,无需嵌入 iframe 即可支持 COEP。
文档隔离政策的运作方式
借助文档隔离政策,您可以隔离 Web 应用中的特定框架。通过在文档中发送 Document-Isolation-Policy 标头,文档可以访问 SharedArrayBuffers 等强大功能,否则这些功能会因安全问题而受到限制。与 COOP 和 COEP 不同,文档隔离政策不会对文档可以与之通信的网页或其可以嵌入的子框架施加限制。采用文档隔离政策的文档可以打开跨源弹出式窗口并与之通信。它们还可以正常嵌入任何 iframe。
与 COEP 类似,文档隔离政策有两种模式:isolate-and-require-corp
和 isolate-and-credentialless
。这些模式用于控制在不使用跨域资源共享 (CORS) 的情况下加载的跨源子资源的处理方式。在 isolate-and-require-corp
模式下,跨源资源必须使用 Cross-Origin-Resource-Policy
标头明确声明其跨源资源政策;否则,这些资源将被屏蔽。这可确保有意共享资源。相反,isolate-and-credentialless
模式允许在没有 CORS 标头的情况下加载跨源资源,但会从请求中剥离所有凭据(例如 Cookie 或 HTTP 身份验证),从而有效地将资源视为匿名资源。此模式提供了一种限制较少但仍然安全的方式来处理非 CORS 资源。
使用文档隔离政策隔离的 iframe 无法对未隔离的同源 iframe 执行同步 DOM 访问。不过,这些隔离的 iframe 仍可使用跨源 Window 方法(例如 postMessage)与非隔离的帧进行通信。此外,它们还保留对存储 API 的完整访问权限,即使启用了隔离,也允许在同一来源中保留和共享数据。