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

瀏覽器相容性

另見