Document: 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 des Document
Interfaces ermöglicht es Top-Level-Websites, Drittanbieter-Cookie-Zugriff im Namen von eingebetteten Inhalten anzufordern, die von einer anderen Website innerhalb desselben verwandten Website-Sets stammen. Sie gibt ein Promise
zurück, das sich auflöst, 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 sich mit undefined
erfüllt, 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 Top-Level-Inhalt verarbeitet gerade eine Benutzeraktion wie einen Tap oder Klick (flüchtige Aktivierung), oder es wurde bereits zuvor eine Erlaubnis erteilt. Wenn die Erlaubnis zuvor nicht erteilt wurde, müssen sie innerhalb eines Benutzeraktions-basierten Ereignishandlers ausgeführt werden. Das Verhalten der Benutzeraktion hängt vom Zustand des Promise
ab:
- Wenn das
Promise
aufgelöst wird (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, das eine Aktion erfordert. Dies verhindert, dass SkripterequestStorageAccessFor()
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 kein sicherer Kontext ist.
- Das Dokument nicht das Top-Level-Dokument ist.
- Das Dokument einen
null
-Ursprung hat. - Der angegebene
requestedOrigin
opak ist. - Die Top-Level- und eingebetteten Seiten nicht im selben verwandten 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
Berechtigungsrichtlinie blockiert wird. - Die Nutzung durch die Berechtigungsanfrage des Benutzeragenten zum Verwenden der API verweigert wird.
TypeError
-
Wird ausgelöst, wenn
requestedOrigin
keine gültige URL ist.
Beschreibung
Die requestStorageAccessFor()
Methode adressiert Herausforderungen bei der Anwendung der Storage Access API auf Top-Level-Websites, die bilder- oder skriptübergreifende Websites verwenden, die Cookies erfordern. Sie ist relevant für Benutzeragenten, die standardmäßig den Zugriff auf Drittanbieter- und nicht partitionierte 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 direkt in eine Top-Level-Site eingebettete Quell-Ressourcen ermöglichen, die selbst keinen Speicherzugriff anfordern können, zum Beispiel <img>
Elemente. Quellübergreifende Inhalte, die in <iframe>
s eingebettet sind, ihre eigene Logik und Ressourcen haben und Zugriff auf Drittanbieter-Cookies benötigen, sollten Speicherzugriff über Document.requestStorageAccess()
anfordern.
Um zu überprüfen, ob bereits die Erlaubnis für den Zugriff auf Drittanbieter-Cookies über requestStorageAccessFor()
erteilt wurde, können Sie Permissions.query()
aufrufen und 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, welcher "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 Nutzung dieser Funktion kann durch eine storage-access
Berechtigungsrichtlinie blockiert werden, die auf Ihrem Server festgelegt ist (dieselbe, die den Rest der Storage Access API steuert). Zusätzlich muss das Dokument weitere browserspezifische Überprüfungen bestehen, wie Zulassungslisten, Sperrlisten, geräteinterne Klassifizierung, 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 quellenübergreifende Anfragen Cookies enthalten, wenn sie CORS / crossorigin
enthalten, sodass Websites möglicherweise warten möchten, bevor eine Anfrage ausgelöst wird. Solche Anfragen müssen die Option credentials: "include"
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: Sehen Sie Verwenden der Storage Access API für ein umfassenderes Beispiel.
Spezifikationen
Specification |
---|
requestStorageAccessFor API # dom-document-requeststorageaccessfor |
Browser-Kompatibilität
Report problems with this compatibility data on GitHubdesktop | mobile | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
requestStorageAccessFor |
Legend
Tip: you can click/tap on a cell for more information.
- Full support
- Full support
- No support
- No support
- Experimental. Expect behavior to change in the future.
- See implementation notes.