Dokument: `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 ermöglicht es obersten Websites, Zugriff auf Cookies von Drittanbietern für eingebettete Inhalte anzufordern, die von einer anderen Website innerhalb desselben verwandten Website-Sets 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 Cookies von Drittanbietern anfordern.
Rückgabewert
Ein Promise
, das mit undefined
erfüllt wird, wenn der Zugriff auf Cookies von Drittanbietern gewährt wurde, und abgelehnt wird, wenn der Zugriff verweigert wurde.
Anfragen über requestStorageAccessFor()
werden automatisch abgelehnt, es sei denn, der oberste Inhalt verarbeitet momentan eine Benutzeraktion wie einen Klick oder Tap (transiente Aktivierung), oder die Berechtigung wurde bereits zuvor gewährt. Wurde die Berechtigung nicht zuvor gewährt, müssen sie innerhalb eines benutzergesteuerten Ereignishandlers ausgeführt werden. Das Verhalten der Benutzeraktion hängt vom Status des Promises ab:
- Wenn das Promise aufgelöst wird (d.h. die Berechtigung wurde gewährt), 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 Berechtigung wurde nicht gewährt), wurde die Benutzeraktion verbraucht, sodass das Skript nichts tun kann, was eine Aktion erfordert. Dies verhindert, dass Skripte
requestStorageAccessFor()
erneut aufrufen, wenn die Berechtigung 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 kein sicherer Kontext ist.
- Das Dokument nicht das oberste Dokument ist.
- Das Dokument einen
null
-Ursprung hat. - Der angegebene
requestedOrigin
undurchsichtig ist. - Die oberste und die eingebettete Website nicht im selben verwandten Website-Set sind.
- Das einbettende
<iframe>
sandboxed ist und dasallow-storage-access-by-user-activation
Token nicht gesetzt ist. - Die Nutzung durch eine
storage-access
Permissions Policy blockiert wird. - Die Nutzung durch die Berechtigungsanforderung des User-Agents zur Verwendung 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 obersten Websites, die plattformübergreifende Bilder oder Skripte nutzen, die Cookies erfordern. Sie ist relevant für User Agents, die standardmäßig den Zugriff auf Drittanbieter, unpartitionierte Cookies blockieren, um die Privatsphäre zu verbessern (z.B. um Tracking zu verhindern), und stellt eine vorgeschlagene Erweiterung der Storage Access API dar.
requestStorageAccessFor()
kann Drittanbieter-Cookie-Zugriff für plattformübergreifende Ressourcen aktivieren, die direkt in eine oberste Website eingebettet sind und selbst keinen Speicherzugriff anfordern können, zum Beispiel <img>
Elemente. Plattformübergreifende Inhalte, die in <iframe>
s eingebettet sind, ihre eigene Logik und Ressourcen haben und Drittanbieter-Cookie-Zugriff benötigen, sollten Speicherzugriff über Document.requestStorageAccess()
anfordern.
Um zu überprüfen, ob die Berechtigung zum Zugriff auf Drittanbieter-Cookies bereits über requestStorageAccessFor()
gewährt wurde, können Sie Permissions.query()
aufrufen und den Funktionsnamen "top-level-storage-access"
angeben. Dies unterscheidet sich vom Funktionsnamen, der für die reguläre Document.requestStorageAccess()
Methode verwendet wird, die "storage-access"
lautet.
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 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 browserspezifische Prüfungen wie Zulassungslisten, Sperrlisten, Geräteklassifizierungen, 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 requestStorageAccessFor()
Aufruf werden plattformübergreifende Anfragen Cookies enthalten, wenn sie CORS / crossorigin
beinhalten, sodass Websites möglicherweise warten möchten, bevor sie eine Anfrage auslösen. Solche Anfragen müssen die Option credentials: "include"
verwenden und Ressourcen müssen das crossorigin="use-credentials"
Attribut einschließen.
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 |