Window: crossOriginIsolated 属性

Window 接口的 crossOriginIsolated 只读属性返回一个布尔值,指示文档是否已进行跨域隔离。

已进行跨域隔离的文档仅与弹窗和导航中的同源文档以及文档通过 CORS(以及 <iframe>COEP)选择使用的资源(包括同源和跨源)共享其浏览上下文组。文档的跨源 opener 或其打开的任何跨源弹窗之间的关系被切断。该文档还可以与其他可通过操作共享内存进行通信的文档一起托管在单独的操作系统进程中。这减轻了侧信道攻击和被称为 XS-Leaks 的跨源攻击的风险。

跨域隔离的文档在使用以下 API 时限制更少:

如果文档以包含以下 HTTP 响应头的方式返回,则它将进行跨域隔离:

API 访问还必须由 Permissions-Policycross-origin-isolated 允许。否则,crossOriginIsolated 属性将返回 false,并且文档将无法使用上述限制较少的 API。

一个布尔值。

示例

跨域隔离文档

要跨域隔离文档,请执行以下操作:

  • Cross-Origin-Opener-Policy HTTP 头设置为 same-origin

    http
    Cross-Origin-Opener-Policy: same-origin
    
  • Cross-Origin-Embedder-Policy HTTP 头设置为 require-corpcredentialless

    http
    Cross-Origin-Embedder-Policy: require-corp
    Cross-Origin-Embedder-Policy: credentialless
    
  • Permissions-Policy 头的 cross-origin-isolated 指令不得阻止对该功能的访问。请注意,该指令的默认允许列表是 self,因此默认情况下将授予跨域隔离文档的权限。

检查文档是否已跨域隔离

js
const myWorker = new Worker("worker.js");

if (window.crossOriginIsolated) {
  const buffer = new SharedArrayBuffer(16);
  myWorker.postMessage(buffer);
} else {
  const buffer = new ArrayBuffer(16);
  myWorker.postMessage(buffer);
}

规范

规范
HTML
# dom-crossoriginisolated-dev

浏览器兼容性

另见