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
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
odersame-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.
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:
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