Dokumentation: `requestStorageAccessFor()` Methode
Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.
Die requestStorageAccessFor()
Methode der Document
Schnittstelle erlaubt es Top-Level-Seiten, im Namen von eingebettetem Inhalt, der von einer anderen Seite desselben related website set stammt, Zugriff auf Drittanbieter-Cookies anzufordern. Sie gibt ein Promise
zurück, das gelöst wird, wenn der Zugriff gewährt wurde, und abgelehnt wird, wenn der Zugriff verweigert wurde.
Syntax
requestStorageAccessFor(requestedOrigin)
Parameter
requestedOrigin
-
Ein String, der die URL des Ursprungs darstellt, für den Sie Zugriff auf Drittanbieter-Cookies anfordern.
Rückgabewert
Ein Promise
, das mit undefined
erfüllt wird, wenn der Zugriff auf Drittanbieter-Cookies gewährt wurde, und abgelehnt wird, wenn der Zugriff verweigert wurde.
Anforderungen von requestStorageAccessFor()
werden automatisch abgelehnt, es sei denn, der Top-Level-Inhalt verarbeitet gerade eine Benutzerinteraktion wie beispielsweise ein Tippen oder Klicken (transient activation), oder die Berechtigung wurde bereits zuvor erteilt. Wenn die Berechtigung nicht zuvor gewährt wurde, müssen sie innerhalb eines auf Benutzerinteraktionen basierenden Ereignishandlers ablaufen. Das Verhalten der Benutzerinteraktion hängt vom Zustand des Promise ab:
- Wenn das Promise erfüllt wird (d.h. die Berechtigung wurde erteilt), wurde die Benutzerinteraktion nicht verbraucht, sodass das Skript anschließend APIs aufrufen kann, die eine Benutzerinteraktion erfordern.
- Wenn das Promise abgelehnt wird (d.h. die Berechtigung 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 Berechtigung verweigert wird.
Ausnahmen
InvalidStateError
DOMException
-
Wird ausgelöst, wenn das aktuelle
Document
noch nicht aktiv ist. NotAllowedError
DOMException
-
Wird ausgelöst, wenn:
- Das Fenster des Dokuments kein sicherer Kontext ist.
- Das Dokument nicht das Top-Level-Dokument ist.
- Das Dokument einen
null
Ursprung hat. - Der angegebene
requestedOrigin
undurchsichtig ist. - Die Top-Level und eingebetteten Seiten nicht im selben related website set sind.
- Das einbettende
<iframe>
ist sandboxed, und dasallow-storage-access-by-user-activation
Token ist nicht gesetzt. - Die Nutzung durch eine
storage-access
Permissions Policy blockiert wird. - Die Nutzung durch die Berechtigungsanfrage des Benutzeragenten zur Nutzung der API verweigert wird.
TypeError
-
Wird ausgelöst, wenn
requestedOrigin
keine gültige URL ist.
Beschreibung
Die requestStorageAccessFor()
Methode adressiert Herausforderungen bei der Einführung der Storage Access API auf Top-Level-Seiten, die cross-site Bilder oder Skripte verwenden, die Cookies benötigen. Es ist relevant für Benutzeragenten, die standardmäßig den Zugriff auf Drittanbieter, unpartitionierte Cookies zur Verbesserung der Privatsphäre blockieren (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 Top-Level-Seite eingebettet sind und nicht selbst Speicherzugriff anfordern können, wie zum Beispiel <img>
Elemente. Cross-site Inhalt, der in <iframe>
s eingebettet ist und seine eigene Logik und Ressourcen hat und Zugriff auf Drittanbieter-Cookies benötigt, sollte den Speicherzugriff über Document.requestStorageAccess()
anfordern.
Um zu überprüfen, ob die Berechtigung für den Zugriff auf Drittanbieter-Cookies bereits über requestStorageAccessFor()
gewährt wurde, können Sie Permissions.query()
aufrufen, wobei Sie den Feature-Namen "top-level-storage-access"
angeben. Dies unterscheidet sich vom Feature-Namen, der für die reguläre Document.requestStorageAccess()
Methode verwendet wird, welche "storage-access"
ist.
Der Permissions.query()
Aufruf muss den eingebetteten Ursprung angeben; zum Beispiel:
navigator.permissions.query({
name: "top-level-storage-access",
requestedOrigin: "https://www.example.com",
});
Hinweis:
Die Verwendung dieser Funktion kann durch eine auf Ihrem Server eingestellte storage-access
Permissions Policy blockiert werden (dieselbe, die den Rest der Storage Access API kontrolliert). Zusätzlich muss das Dokument zusätzliche browserspezifische Prüfungen bestehen, wie zum Beispiel Zulassungslisten, Sperrlisten, Geräteklassifikation, Benutzereinstellungen oder Anti-Clickjacking Heuristiken.
Beispiele
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
einschließen, daher sollten Seiten möglicherweise warten, bevor sie eine Anfrage auslösen. Solche Anfragen müssen die credentials: "include"
Option verwenden und Ressourcen müssen das crossorigin="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: Siehe Verwendung der Storage Access API für ein vollständigeres Beispiel.
Spezifikationen
Specification |
---|
requestStorageAccessFor API # dom-document-requeststorageaccessfor |
Browser-Kompatibilität
BCD tables only load in the browser