WorkerGlobalScope: crossOriginIsolated プロパティ
メモ: この機能はウェブワーカー内でのみ利用可能です。
crossOriginIsolated
は WorkerGlobalScope
インターフェイスの読み取り専用プロパティで、ウェブサイトがオリジン間分離状態にあるかどうかを示す論理値を返します。
オリジン間分離文書は、閲覧コンテキストグループを、ポップアップおよびナビゲーション内の同一オリジン文書、および CORS ( の場合は COEP)を通じて使用することを選択したリソース (同一オリジンおよび他のオリジン)とのみ共有します。
文書の他のオリジンからの開き手、またはそれが開く他のオリジンからのポップアップとの関係は切断されます。
また、この文書は、共有メモリー上で動作することにより通信できる他の文書と並んで、別個の OS プロセスでホストされる場合もあります
。これにより、 XS-Leaks と呼ばれるサイドチャネル攻撃やオリジン間の攻撃のリスクが軽減されます。
オリジン間分離文書は、次の API を使用すると、操作の制限が少なくなります。
SharedArrayBuffer
を作成し、DedicatedWorkerGlobalScope.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 (self.crossOriginIsolated) {
const buffer = new SharedArrayBuffer(16);
myWorker.postMessage(buffer);
} else {
const buffer = new ArrayBuffer(16);
myWorker.postMessage(buffer);
}
仕様書
Specification |
---|
HTML # dom-crossoriginisolated-dev |