Window: crossOriginIsolated プロパティ
crossOriginIsolated は Window インターフェイスの読み取り専用プロパティで、ウェブサイトがオリジン間分離状態にあるかどうかを示す論理値を返します。
オリジン間分離文書は、閲覧コンテキストグループを、ポップアップおよびナビゲーション内の同一オリジン文書、および CORS (<iframe> の場合は COEP)を通じて使用することを選択したリソース (同一オリジンおよび他のオリジン)とのみ共有します。
文書の他のオリジンからの開き手、またはそれが開く他のオリジンからのポップアップとの関係は切断されます。
また、この文書は、共有メモリー上で動作することにより通信できる他の文書と並んで、別個の OS プロセスでホストされる場合もあります
。これにより、 XS-Leaks と呼ばれるサイドチャネル攻撃やオリジン間の攻撃のリスクが軽減されます。
オリジン間分離文書は、次の API を使用すると、操作の制限が少なくなります。
SharedArrayBufferを作成し、Window.postMessage()やMessagePort.postMessage()の呼び出しで送信することができます。Performance.now()がより高い精度になります。Performance.measureUserAgentSpecificMemory()を呼び出すことができます。
文書は、次のヘッダーを含む HTTP レスポンスで返された場合、オリジン間の分離の適用対象となります。
Cross-Origin-Opener-Policyヘッダーにsame-originディレクティブが指定されているCross-Origin-Embedder-Policyヘッダーに directiverequire-corpまたはcredentiallessディレクティブが指定されている
この API へのアクセスは、 Permissions-Policy cross-origin-isolated によって許可されている必要もあります。
そうしないと、 crossOriginIsolated プロパティは false を返し、文書は上記の制限が緩和された API を使用できなくなります。
値
論理値です。
例
>文書のオリジン間分離
文書をオリジン間分離するには、
-
HTTP の
Cross-Origin-Opener-Policyへっだーをsame-originに設定します。httpCross-Origin-Opener-Policy: same-origin -
HTTP の
Cross-Origin-Embedder-Policyヘッダーをrequire-corpまたはcredentiallessに設定します。httpCross-Origin-Embedder-Policy: require-corp Cross-Origin-Embedder-Policy: credentialless -
cross-origin-isolatedディレクティブをPermissions-Policyヘッダーに設定してこの機能をブロックしないようにします。 このディレクティブの既定の許可リストはselfであるため、オリジンが異なる文書には既定で許可が与えられます。
文書がオリジン間分離されているかどうかをチェック
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> |
ブラウザーの互換性
Loading…