Dokumentation: Methode requestStorageAccessFor()
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 des Document
Interfaces ermöglicht es Top-Level-Sites, im Namen von eingebetteten Inhalten, die von einer anderen Seite im selben verbundenen Website-Set stammen, Zugriff auf Drittanbieter-Cookies zu beantragen. Sie liefert 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 beantragen.
Rückgabewert
Ein Promise
, der 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 Top-Level-Inhalt verarbeitet gerade eine Benutzeraktion wie einen Tipp oder Klick (transiente Aktivierung), oder die Erlaubnis wurde bereits vorher erteilt. Wenn die Erlaubnis nicht vorher erteilt wurde, müssen sie innerhalb eines benutzeraktionsbasierten Ereignishandlers laufen. Das Benutzeraktionsverhalten 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 Skripte
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 kein sicherer Kontext ist.
- Das Dokument nicht das oberste Dokument ist.
- Das Dokument einen
null
Ursprung hat. - Der angegebene
requestedOrigin
undurchsichtig ist. - Die Top-Level- und eingebetteten Sites sich nicht im selben verbundenen Website-Set befinden.
- Das einbettende
<iframe>
gesandet ist und dasallow-storage-access-by-user-activation
-Token nicht gesetzt ist. - Die Nutzung durch eine
storage-access
Berechtigungsrichtlinie 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 Adoption der Storage Access API auf Top-Level-Sites, die site-übergreifende Bilder oder Skripte nutzen, die Cookies erfordern. Sie ist relevant für Benutzeragenten, die standardmäßig den Zugriff auf Drittanbieter-, nicht partitionierte Cookies blockieren, um den Datenschutz zu verbessern (z. B. zur Vermeidung von Tracking), und ist eine vorgeschlagene Erweiterung der Storage Access API.
requestStorageAccessFor()
kann den Zugriff auf Drittanbieter-Cookies für site-übergreifende Ressourcen direkt in eine Top-Level-Site eingebettet ermöglichen, die sich selbst keinen Speicherzugang anfordern können, beispielsweise <img>
Elemente. Site-übergreifende Inhalte, die in <iframe>
s eingebettet sind und ihre eigene Logik und Ressourcen haben und Zugriff auf Drittanbieter-Cookies benötigen, sollten Speicherzugriff über Document.requestStorageAccess()
anfordern.
Um zu überprüfen, ob die Erlaubnis zum Zugriff auf Drittanbieter-Cookies bereits durch requestStorageAccessFor()
erteilt wurde, können Sie Permissions.query()
aufrufen und den Funktionsnamen "top-level-storage-access"
angeben. Dies unterscheidet sich von dem Funktionsnamen, der für die reguläre Document.requestStorageAccess()
Methode verwendet wird, nämlich "storage-access"
.
Der Aufruf von Permissions.query()
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 (die gleiche, die den Rest der Storage Access API steuert). Darüber hinaus muss das Dokument zusätzliche browserspezifische Überprüfungen wie Allowlists, Blocklists, Geräteklassifizierung, 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 site-übergreifende Anfragen Cookies enthalten, wenn sie CORS / crossorigin
beinhalten, daher sollten Sites möglicherweise warten, bevor sie eine Anfrage auslösen. 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: Siehe Using the Storage Access API für ein vollständigeres Beispiel.
Spezifikationen
Specification |
---|
requestStorageAccessFor API # dom-document-requeststorageaccessfor |