Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

Dokument: requestStorageAccessFor() Methode

Veraltet: Diese Funktion wird nicht mehr empfohlen. Obwohl einige Browser sie möglicherweise noch unterstützen, könnte sie bereits aus den relevanten Webstandards entfernt worden sein, in Kürze entfernt werden oder nur noch aus Kompatibilitätsgründen bestehen. Vermeiden Sie die Verwendung und aktualisieren Sie vorhandenen Code, falls möglich; siehe die Kompatibilitätstabelle am Ende dieser Seite, um Ihre Entscheidung zu unterstützen. Beachten Sie, dass diese Funktion jederzeit aufhören könnte zu funktionieren.

Nicht standardisiert: Diese Funktion ist nicht standardisiert. Wir raten davon ab, nicht-standardisierte Funktionen auf produktiven Webseiten zu verwenden, da sie nur von bestimmten Browsern unterstützt werden und sich in Zukunft ändern oder entfernt werden können. Unter Umständen kann sie jedoch eine geeignete Option sein, wenn es keine standardisierte Alternative gibt.

Die requestStorageAccessFor()-Methode der Document-Schnittstelle ermöglicht es obersten Webseiten, den Zugriff auf Drittanbieter-Cookies im Namen von eingebetteten Inhalten anzufordern, die von einer anderen Seite im gleichen verwandten Website-Set stammen. Sie gibt ein Promise zurück, das sich erfüllt, wenn der Zugriff gewährt wurde, und abgelehnt wird, wenn der Zugriff verweigert wurde.

Syntax

js
requestStorageAccessFor(requestedOrigin)

Parameter

requestedOrigin

Ein String, der die URL des Ursprungs darstellt, für den Sie den Zugriff auf Drittanbieter-Cookies anfordern.

Rückgabewert

Ein Promise, das sich mit undefined erfüllt, wenn der Zugriff auf Drittanbieter-Cookies gewährt wurde, und abgelehnt wird, wenn der Zugriff verweigert wurde.

Anfragen an requestStorageAccessFor() werden automatisch abgelehnt, es sei denn, der oberste Inhalt verarbeitet derzeit eine Benutzeraktion wie einen Tippen oder Klick (transient activation) oder die Erlaubnis wurde zuvor bereits erteilt. Wenn die Erlaubnis nicht zuvor erteilt wurde, müssen sie innerhalb eines ereignisbasierten Benutzeraktions-Handlers ausgeführt werden. Das Verhalten der Benutzeraktion hängt vom Status des Promises ab:

  • Wenn sich das Promise erfüllt (d.h. die Erlaubnis wurde erteilt), wurde die Benutzeraktion nicht verbraucht, sodass das Skript anschließend APIs aufrufen kann, die eine Benutzeraktion erfordern.
  • Wenn das Promise abgelehnt wird (d.h. die Erlaubnis wurde nicht erteilt), wurde die Benutzeraktion verbraucht, sodass das Skript nichts tun kann, was eine Aktion erfordert. Dadurch wird verhindert, dass Skripts requestStorageAccessFor() erneut aufrufen, wenn die Erlaubnis verweigert wurde.

Ausnahmen

InvalidStateError DOMException

Wird ausgelöst, wenn das aktuelle Document noch nicht aktiv ist.

NotAllowedError DOMException

Wird ausgelöst, wenn:

  • Das Fenster des Dokuments nicht ein sicherer Kontext ist.
  • Das Dokument nicht das oberste Dokument ist.
  • Das Dokument einen null-Ursprung hat.
  • Der angegebene requestedOrigin opake ist.
  • Die oberste und eingebetteten Seiten nicht im gleichen verwandten Website-Set sind.
  • Das einbettende <iframe> sandboxed ist und das allow-storage-access-by-user-activation Token nicht gesetzt ist.
  • Die Verwendung durch eine storage-access Permissions Policy blockiert wird.
  • Die Verwendung durch die Berechtigungsanfrage des Benutzeragentes zur Nutzung der API abgelehnt wird.
TypeError

Wird ausgelöst, wenn requestedOrigin keine gültige URL ist.

Beschreibung

Die Methode requestStorageAccessFor() adressiert Herausforderungen bei der Einführung der Storage Access API auf obersten Websites, die cross-site Bilder oder Skripts verwenden, die Cookies benötigen. Sie ist relevant für Benutzeragenten, die standardmäßig den Zugriff auf Drittanbieter, unpartitionierte Cookies blockieren, um die Privatsphäre zu verbessern (z.B. um Tracking zu verhindern), und ist eine vorgeschlagene Erweiterung der Storage Access API.

requestStorageAccessFor() kann den Zugriff auf Drittanbieter-Cookies für cross-site Ressourcen ermöglichen, die direkt in eine oberste Website eingebettet sind und die nicht in der Lage sind, selbst Zugriff zu beantragen, z.B. <img>-Elemente. Cross-site Inhalte, die in <iframe>s eingebettet sind, ihre eigene Logik und Ressourcen haben und Zugriff auf Drittanbieter-Cookies benötigen, sollten über Document.requestStorageAccess() Zugriff anfordern.

Um zu prüfen, ob die Erlaubnis zum Zugriff auf Drittanbieter-Cookies bereits über requestStorageAccessFor() gewährt wurde, kann Permissions.query() aufgerufen werden, wobei der Funktionsname "top-level-storage-access" angegeben wird. Dies unterscheidet sich vom Funktionsnamen der regulären Document.requestStorageAccess() Methode, der "storage-access" ist.

Der Aufruf von Permissions.query() muss den eingebetteten Ursprung spezifizieren; zum Beispiel:

js
navigator.permissions.query({
  name: "top-level-storage-access",
  requestedOrigin: "https://www.example.com",
});

Hinweis: Die Verwendung dieser Funktion kann durch eine storage-access Permissions Policy, die auf Ihrem Server gesetzt ist (die gleiche, die den Rest der Storage Access API steuert), blockiert werden. Außerdem muss das Dokument zusätzliche browserspezifische Überprüfungen wie Allowlisten, Blocklisten, geräteinterne Klassifizierungen, Benutzereinstellungen oder Anti-Clickjacking-Heuristiken bestehen.

Beispiele

js
function rSAFor() {
  if ("requestStorageAccessFor" in document) {
    document.requestStorageAccessFor("https://example.com").then(
      (res) => {
        // Use storage access
        doThingsWithCookies();
      },
      (err) => {
        // Handle errors
      },
    );
  }
}

Nach einem erfolgreichen requestStorageAccessFor()-Aufruf werden cross-site Anfragen Cookies enthalten, wenn sie CORS / crossorigin enthalten; daher möchten die Seiten möglicherweise warten, bevor sie eine Anfrage auslösen. Solche Anfragen müssen die Option credentials: "include" verwenden und Ressourcen müssen das Attribut crossorigin="use-credentials" enthalten.

Zum Beispiel:

js
function checkCookie() {
  fetch("https://example.com/getcookies.json", {
    method: "GET",
    credentials: "include",
  })
    .then((response) => response.json())
    .then((json) => {
      // Do something
    });
}

Hinweis: Siehe Verwendung der Storage Access API für ein vollständigeres Beispiel.

Spezifikationen

Diese Funktion scheint in keiner Spezifikation definiert zu sein.

Browser-Kompatibilität

Siehe auch