Cross-Origin-Opener-Policy
HTTP の Cross-Origin-Opener-Policy
(COOP) はレスポンスヘッダーで、最上位の文書がほかのオリジンの文書と閲覧コンテキストのグループを共有していないことを保証することができます。
COOP は文書のプロセスを分離し、潜在的な攻撃者がポップアップで文書を開いていたとしても、グローバルオブジェクトにアクセスできないようにし、 XS-Leaks と呼ばれる一連のオリジン間アタックを防止します。
COOP を持つクロスオリジン文書が新しいウィンドウで開かれた場合、開いている文書はその参照を持たず、新しいウィンドウの window.opener
プロパティは null
になります。これは、発信するナビゲーションにのみ影響する rel=noopener
よりもウィンドウへの参照をより制御することができるようになります。
構文
Cross-Origin-Opener-Policy: unsafe-none Cross-Origin-Opener-Policy: same-origin-allow-popups Cross-Origin-Opener-Policy: same-origin
ディレクティブ
unsafe-none
-
これが既定値です。 opener 自体が
same-origin
またはsame-origin-allow-popups
という COOP を持っていない限り、文書を opener の閲覧コンテキストグループに追加することを許可します。 same-origin-allow-popups
-
COOP を設定しないか、あるいは COOP を
unsafe-none
に設定することで分離を回避した、新しく開かれたウィンドウやタブへの参照を保持します。 same-origin
-
閲覧コンテキストを同一オリジン文書に限定します。クロスオリジン文書は同じ閲覧コンテキストには読み込まれません。
例
一部の機能はクロスオリジン分離に依存する
SharedArrayBuffer
オブジェクトや Performance.now()
といった非スロットルタイマーなどの特定の機能は、文書に same-origin
値を設定した COOP ヘッダーがある場合のみ利用可能です。
Cross-Origin-Opener-Policy: same-origin Cross-Origin-Embedder-Policy: require-corp
また、同様に設定する必要がある Cross-Origin-Embedder-Policy
ヘッダーも参照してください。
クロスオリジン分離が成功したかどうかを確認するには、ウィンドウとワーカーのコンテキストで利用可能な crossOriginIsolated
プロパティを確認してください。
if (crossOriginIsolated) {
// Post SharedArrayBuffer
} else {
// Do something else
}
仕様書
Specification |
---|
HTML Standard # the-coop-headers |
ブラウザーの互換性
BCD tables only load in the browser