Window: crossOriginIsolated プロパティ

crossOriginIsolatedWindow インターフェイスの読み取り専用プロパティで、ウェブサイトがオリジン間分離状態にあるかどうかを示す論理値を返します。

オリジン間分離文書は、閲覧コンテキストグループを、ポップアップおよびナビゲーション内の同一オリジン文書、および CORS<iframe> の場合は COEP)を通じて使用することを選択したリソース (同一オリジンおよび他のオリジン)とのみ共有します。 文書の他のオリジンからの開き手、またはそれが開く他のオリジンからのポップアップとの関係は切断されます。 また、この文書は、共有メモリー上で動作することにより通信できる他の文書と並んで、別個の OS プロセスでホストされる場合もあります 。これにより、 XS-Leaks と呼ばれるサイドチャネル攻撃やオリジン間の攻撃のリスクが軽減されます。

オリジン間分離文書は、次の API を使用すると、操作の制限が少なくなります。

文書は、次のヘッダーを含む HTTP レスポンスで返された場合、オリジン間の分離の適用対象となります。

この API へのアクセスは、 Permissions-Policy cross-origin-isolated によって許可されている必要もあります。 そうしないと、 crossOriginIsolated プロパティは false を返し、文書は上記の制限が緩和された API を使用できなくなります。

論理値です。

文書のオリジン間分離

文書をオリジン間分離するには、

  • HTTP の Cross-Origin-Opener-Policy へっだーを same-origin に設定します。

    http
    Cross-Origin-Opener-Policy: same-origin
    
  • HTTP の Cross-Origin-Embedder-Policy ヘッダーを require-corp または credentialless に設定します。

    http
    Cross-Origin-Embedder-Policy: require-corp
    Cross-Origin-Embedder-Policy: credentialless
    
  • cross-origin-isolated ディレクティブを Permissions-Policy ヘッダーに設定してこの機能をブロックしないようにします。 このディレクティブの既定の許可リストは 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);
}

仕様書

Specification
HTML
# dom-crossoriginisolated-dev

ブラウザーの互換性

関連情報