Document: requestStorageAccessFor() Methode
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
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 ermöglicht es Hauptwebseiten, Drittanbieter-Cookie-Zugang für eingebettete Inhalte anzufordern, die von einer anderen Website im gleichen verwandten Website-Set stammen. Sie gibt ein Promise zurück, das aufgelö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.
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
InvalidStateErrorDOMException-
Wird geworfen, wenn das aktuelle
Documentnoch nicht aktiv ist. NotAllowedErrorDOMException-
Wird geworfen, wenn:
- Das Fenster des Dokuments kein sicherer 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 selben verwandten 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.
TypeError-
Wird geworfen, wenn
requestedOriginkeine gültige URL ist.
Beschreibung
Die requestStorageAccessFor()-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 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 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 über Document.requestStorageAccess() anfordern.
Um zu überprüfen, ob die Erlaubnis zum Zugriff auf Drittanbieter-Cookies bereits über requestStorageAccessFor() erteilt wurde, können Sie Permissions.query() aufrufen, wobei Sie den Funktionsnamen „top-level-storage-access“ angeben. Dies unterscheidet sich vom Funktionsnamen, der für die reguläre Methode Document.requestStorageAccess() verwendet wird, der „storage-access“ lautet.
Der Permissions.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 eine storage-access Permissions 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 von requestStorageAccessFor() werden standotverwandte Anfragen Cookies enthalten, wenn sie CORS / crossorigin enthalten, sodass Websites möglicherweise warten möchten, 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> |