Dokument: requestStorageAccessFor() Methode
Deprecated
To be removed
This feature is pending removal from browsers. Using it now may lead to broken functionality in future updates. Following the announcement that Chrome will maintain its current approach to third-party cookies, Chrome decided to withdraw certain Privacy Sandbox features including the related website sets. >
Nicht standardisiert: Diese Funktion ist nicht standardisiert. Wir raten davon ab, nicht-standardisierte Funktionen auf produktiven Webseiten zu verwenden, da sie nur von bestimmten Browsern unterstützt werden und sich in Zukunft ändern oder entfernt werden können. Unter Umständen kann sie jedoch eine geeignete Option sein, wenn es keine standardisierte Alternative gibt.
Die requestStorageAccessFor() Methode des Document Schnittstelle ermöglicht es obersten Sites, den Zugriff auf Drittanbieter-Cookies im Namen von eingebetteten Inhalten anzufordern, die von einer anderen Site im gleichen verbundenen Website-Set stammen. Sie gibt ein Promise zurück, das sich auflöst, wenn der Zugriff gewährt wurde, und zurückgewiesen wird, wenn der Zugriff verweigert wurde.
Syntax
requestStorageAccessFor(requestedOrigin)
Parameter
requestedOrigin-
Ein String, der die URL des Ursprungs repräsentiert, für den Sie den 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 das zurückgewiesen wird, wenn der Zugriff verweigert wurde.
Anfragen für requestStorageAccessFor() werden automatisch zurückgewiesen, es sei denn, die oberste Inhalte befinden sich gerade in der Verarbeitung einer Benutzeraktion wie ein Tippen oder Klicken (transiente Aktivierung), oder die Erlaubnis wurde zuvor bereits gewährt. Wenn die Erlaubnis nicht zuvor gewährt wurde, müssen sie innerhalb eines auf Benutzeraktionen basierenden 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 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 Erlaubnis wurde nicht gewährt), wurde die Benutzeraktion verbraucht, sodass das Skript nichts tun kann, was eine Aktion erfordert. Dies verhindert, dass Skripte erneut
requestStorageAccessFor()aufrufen, wenn die Erlaubnis verweigert wird.
Ausnahmen
InvalidStateErrorDOMException-
Wird ausgelöst, wenn das aktuelle
Documentnoch nicht aktiv ist. NotAllowedErrorDOMException-
Wird ausgelöst, wenn:
- Das Fenster des Dokuments ist kein sicherer Kontext.
- Das Dokument ist nicht das oberste Dokument.
- Das Dokument hat einen
nullUrsprung. - Der bereitgestellte
requestedOriginist undurchsichtig. - Die obersten und eingebetteten Sites befinden sich nicht im gleichen verbundenen Website-Set.
- Das eingebettete
<iframe>ist sandboxed, und das Tokenallow-storage-access-by-user-activationist nicht gesetzt. - Die Nutzung wird durch eine
storage-accessBerechtigungsrichtlinie blockiert. - Die Nutzung wird vom Berechtigungsantrag des Benutzeragenten zur Nutzung der API abgelehnt.
TypeError-
Wird ausgelöst, wenn
requestedOriginkeine gültige URL ist.
Beschreibung
Die requestStorageAccessFor() Methode adressiert Herausforderungen bei der Einführung der Storage Access API auf obersten Sites, die Cross-Site-Bilder oder Skripte verwenden, die Cookies erfordern. 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 den Zugriff auf Drittanbieter-Cookies für Cross-Site-Ressourcen ermöglichen, die direkt in eine oberste Site eingebettet sind und selbst keinen Speicherzugriff anfordern können, beispielsweise <img> Elemente. In <iframe>s eingebettete Cross-Site-Inhalte mit eigener Logik und Ressourcen, die Zugriff auf Drittanbieter-Cookies benötigen, sollten den Speicherzugang über Document.requestStorageAccess() anfordern.
Um zu überprüfen, ob bereits eine Berechtigung zum Zugriff auf Drittanbieter-Cookies über requestStorageAccessFor() gewährt 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 spezifizieren; beispielsweise:
navigator.permissions.query({
name: "top-level-storage-access",
requestedOrigin: "https://www.example.com",
});
Hinweis:
Die Verwendung 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). Zusätzlich muss das Dokument zusätzliche browserspezifische Prüfungen bestehen, wie Allowlisten, Blocklisten, On-Device-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 Cross-Site-Anfragen Cookies enthalten, wenn sie CORS / crossorigin einbeziehen, sodass Sites möglicherweise warten möchten, bevor eine Anfrage ausgelöst wird. Solche Anfragen müssen die credentials: "include" Option verwenden und Ressourcen müssen das crossorigin="use-credentials" Attribut einbeziehen.
Beispielsweise:
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.