title | slug |
---|---|
Cross-Origin-Opener-Policy |
Web/HTTP/Headers/Cross-Origin-Opener-Policy |
{{HTTPSidebar}}
HTTP の Cross-Origin-Opener-Policy
(COOP) はレスポンスヘッダーで、最上位の文書がほかのオリジンの文書と閲覧コンテキストのグループを共有していないことを保証することができます。
COOP は文書のプロセスを分離し、潜在的な攻撃者がポップアップで文書を開いていたとしても、グローバルオブジェクトにアクセスできないようにし、 XS-Leaks と呼ばれる一連のオリジン間アタックを防止します。
COOP を持つクロスオリジン文書が新しいウィンドウで開かれた場合、開いている文書はその参照を持たず、新しいウィンドウの window.opener
プロパティは null
になります。これは、発信するナビゲーションにのみ影響する rel=noopener
よりもウィンドウへの参照をより制御することができるようになります。
ヘッダー種別 | {{Glossary("Response header", "レスポンスヘッダー")}} |
---|---|
{{Glossary("Forbidden header name", "禁止ヘッダー名")}} | いいえ |
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 の閲覧コンテキストグループに追加することを許可します。
- : これが既定値です。 opener 自体が
same-origin-allow-popups
- : COOP を設定しないか、あるいは COOP を
unsafe-none
に設定することで分離を回避した、新しく開かれたウィンドウやタブへの参照を保持します。
- : COOP を設定しないか、あるいは COOP を
same-origin
- : 閲覧コンテキストを同一オリジン文書に限定します。クロスオリジン文書は同じ閲覧コンテキストには読み込まれません。
{{jsxref("SharedArrayBuffer")}} オブジェクトや {{domxref("Performance.now()")}} といった非スロットルタイマーなどの特定の機能は、文書に same-origin
値を設定した COOP ヘッダーがある場合のみ利用可能です。
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corp
また、同様に設定する必要がある {{HTTPHeader("Cross-Origin-Embedder-Policy")}} ヘッダーも参照してください。
クロスオリジン分離が成功したかどうかを確認するには、ウィンドウとワーカーのコンテキストで利用可能な crossOriginIsolated
プロパティを確認してください。
if (crossOriginIsolated) {
// Post SharedArrayBuffer
} else {
// Do something else
}
{{Specifications}}
{{Compat}}
- {{httpheader("Cross-Origin-Embedder-Policy")}}