Cross-Origin-Opener-Policy

Der HTTP Cross-Origin-Opener-Policy (COOP) Antwort-Header ermöglicht es Ihnen sicherzustellen, dass ein Dokument auf oberster Ebene keine Browsing-Kontextgruppe mit Dokumenten von anderer Herkunft teilt.

COOP wird Ihr Dokument in einem eigenen Prozess isolieren, und potenzielle Angreifer können nicht auf Ihr globales Objekt zugreifen, wenn sie es beispielsweise in einem Popup öffnen würden, wodurch eine Reihe von Angriffen über Domänengrenzen, genannt XS-Leaks, verhindert wird.

Wenn ein Dokument mit COOP von einer anderen Herkunft in einem neuen Fenster geöffnet wird, hat das öffnende Dokument keine Referenz darauf, und die window.opener-Eigenschaft des neuen Fensters wird null sein. Dies ermöglicht es Ihnen, mehr Kontrolle über Referenzen zu einem Fenster zu haben als rel=noopener, das nur ausgehende Navigationen betrifft.

Headertyp Antwort-Header
Verbotener Header-Name Nein

Syntax

http
Cross-Origin-Opener-Policy: unsafe-none
Cross-Origin-Opener-Policy: same-origin-allow-popups
Cross-Origin-Opener-Policy: same-origin

Direktiven

unsafe-none

Dies ist der Standardwert. Ermöglicht es dem Dokument, zur Browsing-Kontextgruppe seines Öffnenden hinzugefügt zu werden, es sei denn, das Öffnende selbst hat einen COOP von same-origin oder same-origin-allow-popups.

same-origin-allow-popups

Beibehaltung von Referenzen zu neu geöffneten Fenstern oder Tabs, die entweder keinen COOP setzen oder sich durch Setzen eines COOP von unsafe-none aus der Isolation ausklammern.

same-origin

Isoliert den Browsing-Kontext ausschließlich auf Dokumente derselben Herkunft. Dokumente von anderer Herkunft werden nicht im gleichen Browsing-Kontext geladen.

Beispiele

Bestimmte Funktionen erfordern eine Isolation über Domänengrenzen hinweg

Bestimmte Funktionen wie SharedArrayBuffer-Objekte oder Performance.now() mit ungedrosselten Timern sind nur verfügbar, wenn Ihr Dokument einen COOP-Header mit dem Wert same-origin setzt.

http
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corp

Siehe auch den Cross-Origin-Embedder-Policy-Header, den Sie ebenfalls auf require-corp oder credentialless setzen müssen.

Um zu überprüfen, ob die Isolation über Domänengrenzen erfolgreich war, können Sie die Window.crossOriginIsolated-Eigenschaft oder die WorkerGlobalScope.crossOriginIsolated-Eigenschaft testen, die in Fenster- und Worker-Kontexten verfügbar ist:

js
const myWorker = new Worker("worker.js");

if (crossOriginIsolated) {
  const buffer = new SharedArrayBuffer(16);
  myWorker.postMessage(buffer);
} else {
  const buffer = new ArrayBuffer(16);
  myWorker.postMessage(buffer);
}

Spezifikationen

Specification
HTML Standard
# the-coop-headers

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch