Window: crossOriginIsolated-Eigenschaft
Die schreibgeschützte crossOriginIsolated-Eigenschaft der Window-Schnittstelle gibt einen booleschen Wert zurück, der anzeigt, ob das Dokument plattformübergreifend isoliert ist.
Ein plattformübergreifend isoliertes Dokument teilt seine Browsing-Kontextgruppe nur mit gleichstammigen Dokumenten in Popups und Navigationen sowie mit Ressourcen (sowohl gleichstammig als auch plattformübergreifend), die das Dokument mittels CORS (und COEP für <iframe>) eingebunden hat. Die Beziehung zwischen einem plattformübergreifenden Opener des Dokuments oder jeglichen plattformübergreifenden Popups, die es öffnet, wird gekappt. Das Dokument kann auch in einem separaten Betriebssystemprozess neben anderen Dokumenten gehostet werden, mit denen es kommunizieren kann, indem es auf gemeinsamen Speicher zugreift. Dies mindert das Risiko von Seitenkanalangriffen und plattformübergreifenden Angriffen, die als XS-Leaks bekannt sind.
Plattformübergreifend isolierte Dokumente arbeiten mit weniger Einschränkungen, wenn die folgenden APIs verwendet werden:
SharedArrayBufferkann erstellt und über einenWindow.postMessage()oder einenMessagePort.postMessage()-Aufruf gesendet werden.Performance.now()bietet eine höhere Genauigkeit.Performance.measureUserAgentSpecificMemory()kann aufgerufen werden.
Ein Dokument wird plattformübergreifend isoliert, wenn es mit einer HTTP-Antwort zurückgegeben wird, die die Header enthält:
Cross-Origin-Opener-Policy-Header mit der Direktivesame-origin.Cross-Origin-Embedder-Policy-Header mit der Direktiverequire-corpodercredentialless.
Der Zugriff auf die APIs muss auch durch die Permissions-Policy cross-origin-isolated erlaubt sein. Andernfalls gibt die crossOriginIsolated-Eigenschaft false zurück, und das Dokument kann die oben aufgeführten APIs nicht mit eingeschränkten Zugriff nutzen.
Wert
Ein boolescher Wert.
Beispiele
>Dokument plattformübergreifend isolieren
Um ein Dokument plattformübergreifend zu isolieren:
-
Setzen Sie den
Cross-Origin-Opener-Policy-HTTP-Header aufsame-origin:httpCross-Origin-Opener-Policy: same-origin -
Setzen Sie den
Cross-Origin-Embedder-Policy-HTTP-Header aufrequire-corpodercredentialless:httpCross-Origin-Embedder-Policy: require-corp Cross-Origin-Embedder-Policy: credentialless -
Die Direktive
cross-origin-isolateddesPermissions-Policy-Headers darf den Zugriff auf die Funktion nicht blockieren. Beachten Sie, dass die standardmäßige Erlaubnisliste der Direktiveselfist, sodass die Berechtigung standardmäßig plattformübergreifend isolierten Dokumenten gewährt wird.
Überprüfen, ob das Dokument plattformübergreifend isoliert ist
const myWorker = new Worker("worker.js");
if (window.crossOriginIsolated) {
const buffer = new SharedArrayBuffer(16);
myWorker.postMessage(buffer);
} else {
const buffer = new ArrayBuffer(16);
myWorker.postMessage(buffer);
}
Spezifikationen
| Specification |
|---|
| HTML> # dom-crossoriginisolated-dev> |
Browser-Kompatibilität
Loading…