Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
Document: requestStorageAccessFor() Methode
Experimentell:Dies ist eineexperimentelle Technologie
Überprüfen Sie dieBrowser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.
DierequestStorageAccessFor()-Methode derDocument-Schnittstelle ermöglicht es Hauptwebseiten, Drittanbieter-Cookie-Zugang für eingebettete Inhalte anzufordern, die von einer anderen Website im gleichenverwandten Website-Set stammen. Sie gibt einPromise zurück, das aufgelöst wird, wenn der Zugriff gewährt wurde, und abgelehnt wird, wenn der Zugriff verweigert wurde.
In diesem Artikel
Syntax
requestStorageAccessFor(requestedOrigin)Parameter
requestedOriginEin String, der die URL des Ursprungs darstellt, für den Sie Zugriff auf Drittanbieter-Cookies anfordern.
Rückgabewert
EinPromise, das mitundefined erfüllt wird, wenn der Zugriff auf Drittanbieter-Cookies gewährt wurde, und abgelehnt wird, wenn der Zugriff verweigert wurde.
requestStorageAccessFor()-Anfragen werden automatisch abgelehnt, es sei denn, der Hauptinhalt verarbeitet gerade eine Benutzerinteraktion wie Tippen oder Klicken (flüchtige Aktivierung), oder die Erlaubnis wurde bereits zuvor gewährt. Wenn die Erlaubnis nicht zuvor erteilt wurde, müssen sie innerhalb eines ereignisbasierten Nutzerinteraktions-Handlers ausgeführt werden. Das Verhalten der Benutzerinteraktion hängt vom Zustand des Versprechens ab:
- Wenn das Versprechen aufgelöst wird (d.h. die Erlaubnis wurde erteilt), wurde die Benutzerinteraktion nicht verbraucht, sodass das Skript anschließend APIs aufrufen kann, die eine Benutzerinteraktion erfordern.
- Wenn das Versprechen abgelehnt wird (d.h. die Erlaubnis wurde nicht erteilt), wurde die Benutzerinteraktion verbraucht, sodass das Skript nichts tun kann, was eine Interaktion erfordert. Dies verhindert, dass Skripte
requestStorageAccessFor()erneut aufrufen, wenn die Erlaubnis verweigert wird.
Ausnahmen
InvalidStateErrorDOMExceptionWird geworfen, wenn das aktuelle
Documentnoch nicht aktiv ist.NotAllowedErrorDOMExceptionWird geworfen, wenn:
- Das Fenster des Dokuments keinsicherer Kontext ist.
- Das Dokument nicht das Hauptdokument ist.
- Das Dokument einen
null-Ursprung hat. - Der angegebene
requestedOriginundurchsichtig ist. - Die Haupt- und eingebetteten Websites nicht im selbenverwandten Website-Set sind.
- Das einbettende
<iframe>sandkastenfähig ist und dasallow-storage-access-by-user-activation-Token nicht gesetzt ist. - Die Nutzung durch eine
storage-accessPermissions Policy blockiert wird. - Die Nutzung durch die Berechtigungsanforderung des Benutzeragenten zur Nutzung der API abgelehnt wird.
TypeErrorWird geworfen, wenn
requestedOriginkeine gültige URL ist.
Beschreibung
DierequestStorageAccessFor()-Methode adressiert Herausforderungen bei der Einführung der Storage Access API auf Hauptwebseiten, die standortübergreifende Bilder oder Skripte verwenden, die Cookies benötigen. Sie ist relevant für Benutzeragenten, die standardmäßig den Zugriff aufDrittanbieter-,unpartitionierte Cookies blockieren, um die Privatsphäre zu verbessern (z.B. um Tracking zu verhindern), und ist eine vorgeschlagene Erweiterung derStorage Access API.
requestStorageAccessFor() kann Zugriff auf Drittanbieter-Cookies für ressourcenübergreifende Inhalte aktivieren, die direkt in eine Hauptwebseite eingebettet sind und selbst keinen Speicherzugriff anfordern können, z.B.<img>-Elemente. Standotverwandte Inhalte, die in<iframe>s eingebettet sind und ihre eigene Logik und Ressourcen haben und Zugriff auf Drittanbieter-Cookies benötigen, sollten den Speicherzugriff überDocument.requestStorageAccess() anfordern.
Um zu überprüfen, ob die Erlaubnis zum Zugriff auf Drittanbieter-Cookies bereits überrequestStorageAccessFor() erteilt wurde, können SiePermissions.query() aufrufen, wobei Sie den Funktionsnamen „top-level-storage-access“ angeben. Dies unterscheidet sich vom Funktionsnamen, der für die reguläre MethodeDocument.requestStorageAccess() verwendet wird, der „storage-access“ lautet.
DerPermissions.query()-Aufruf muss die eingebettete Herkunft spezifizieren; zum Beispiel:
navigator.permissions.query({ name: "top-level-storage-access", requestedOrigin: "https://www.example.com",});Hinweis:Die Nutzung dieses Features kann durch einestorage-accessPermissions Policy blockiert werden, die auf Ihrem Server gesetzt ist (dieselbe, die den Rest der Storage Access API steuert). Zusätzlich muss das Dokument zusätzliche browser-spezifische Prüfungen wie Allowlisten, Sperrlisten, On-Device-Klassifikation, Benutzereinstellungen oder Anti-Clickjacking Heuristiken bestehen.
Beispiele
function rSAFor() { if ("requestStorageAccessFor" in document) { document.requestStorageAccessFor("https://example.com").then( (res) => { // Use storage access doThingsWithCookies(); }, (err) => { // Handle errors }, ); }}Nach einem erfolgreichen Aufruf vonrequestStorageAccessFor() werden standotverwandte Anfragen Cookies enthalten, wenn sieCORS /crossorigin enthalten, sodass Websites möglicherweise warten möchten, bevor sie eine Anfrage auslösen. Solche Anfragen müssen diecredentials: "include" Option verwenden und Ressourcen müssen dascrossorigin="use-credentials" Attribut enthalten.
Zum Beispiel:
function checkCookie() { fetch("https://example.com/getcookies.json", { method: "GET", credentials: "include", }) .then((response) => response.json()) .then((json) => { // Do something });}Hinweis:SieheVerwendung der Storage Access API für ein vollständigeres Beispiel.
Spezifikationen
| Specification |
|---|
| requestStorageAccessFor API> # dom-document-requeststorageaccessfor> |