WorkerGlobalScope: crossOriginIsolated 属性

注意:此功能仅在 Web Workers 中可用。

crossOriginIsolatedWorkerGlobalScope 接口的一个只读属性,它返回一个布尔值,指示文档是否是跨源隔离的。

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

跨源隔离的文档在使用以下 API 时受到的限制较少

如果文档是通过包含以下标头的 HTTP 响应返回的,则该文档将被跨源隔离:

对 API 的访问还必须由 Permissions-Policy cross-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 Permissions-Policy 标头的 cross-origin-isolated 指令不得阻止对该功能的访问。请注意,该指令的默认允许列表是 self,因此默认情况下会授予跨源隔离文档的权限。

检查文档是否是跨源隔离的

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

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

规范

规范
HTML
# dom-crossoriginisolated-dev

浏览器兼容性

另见