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

瀏覽器相容性

另見