Dokument: requestStorageAccess()-Methode
Baseline
2023
*
Newly available
Since December 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
* Some parts of this feature may have varying levels of support.
Die requestStorageAccess()-Methode der Document-Schnittstelle ermöglicht es Inhalten, die in einem Drittanbieter-Kontext geladen sind (d.h. eingebettet in einem <iframe>), den Zugriff auf Drittanbieter-Cookies und den unpartitionierten Zustand anzufordern. Dies ist relevant für Benutzeragenten, die standardmäßig den Zugriff auf Drittanbieter-Cookies im unpartitionierten Zustand blockieren, um die Privatsphäre zu verbessern (z. B. um Tracking zu verhindern), und ist Teil der Storage Access API.
Um zu überprüfen, ob bereits die Erlaubnis zum Zugriff auf Drittanbieter-Cookies erteilt wurde, können Sie Permissions.query() aufrufen und den Funktionsnamen "storage-access" angeben.
Hinweis:
Die Nutzung dieser Funktion kann durch eine storage-access Permissions Policy, die auf Ihrem Server gesetzt ist, blockiert werden. Außerdem muss das Dokument zusätzliche browser-spezifische Prüfungen bestehen, wie z. B. Allowlists, Blocklists, on-device Klassifizierung, Benutzereinstellungen, Anti-Clickjacking Heuristiken oder die Aufforderung an den Benutzer zur ausdrücklichen Genehmigung.
Syntax
requestStorageAccess()
requestStorageAccess(types)
Parameter
typesOptional-
Ein Objekt, das Eigenschaften enthält, die steuern, welcher unpartitionierte Zustand zugänglich gemacht wird. Wenn nicht angegeben, ist der Standardwert der Eigenschaft
false. Verfügbare Eigenschaften sind wie folgt:all-
Ein Boolean, der angibt, dass alle möglichen unpartitionierten Zustände zugänglich gemacht werden sollen.
-
Ein Boolean, der angibt, dass Drittanbieter-Cookies zugänglich gemacht werden sollen.
sessionStorage-
Ein Boolean, der angibt, dass
StorageAccessHandle.sessionStoragezugänglich gemacht werden soll. localStorage-
Ein Boolean, der angibt, dass
StorageAccessHandle.localStoragezugänglich gemacht werden soll. indexedDB-
Ein Boolean, der angibt, dass
StorageAccessHandle.indexedDBzugänglich gemacht werden soll. locks-
Ein Boolean, der angibt, dass
StorageAccessHandle.lockszugänglich gemacht werden soll. caches-
Ein Boolean, der angibt, dass
StorageAccessHandle.cacheszugänglich gemacht werden soll. getDirectory-
Ein Boolean, der angibt, dass
StorageAccessHandle.getDirectory()zugänglich gemacht werden soll. estimate-
Ein Boolean, der angibt, dass
StorageAccessHandle.estimate()zugänglich gemacht werden soll. createObjectURL-
Ein Boolean, der angibt, dass
StorageAccessHandle.createObjectURL()zugänglich gemacht werden soll. revokeObjectURL-
Ein Boolean, der angibt, dass
StorageAccessHandle.revokeObjectURL()zugänglich gemacht werden soll. BroadcastChannel-
Ein Boolean, der angibt, dass
StorageAccessHandle.BroadcastChannel()zugänglich gemacht werden soll. -
Ein Boolean, der angibt, dass
StorageAccessHandle.SharedWorker()zugänglich gemacht werden soll.
Rückgabewert
Ein Promise, das mit undefined erfüllt wird, wenn der Zugriff auf Drittanbieter-Cookies gewährt wurde und kein types-Parameter angegeben wurde; es erfüllt sich mit StorageAccessHandle, wenn der Zugriff auf den durch den types-Parameter angeforderten unpartitionierten Zustand gewährt wurde, und es wird abgelehnt, wenn der Zugriff verweigert wurde.
requestStorageAccess()-Anfragen werden automatisch abgelehnt, sofern der eingebettete Inhalt nicht gerade eine Benutzeraktion wie einen Tap oder Klick verarbeitet (transient activation) oder die Erlaubnis bereits zuvor erteilt wurde. Wenn die Erlaubnis zuvor nicht erteilt wurde, müssen sie innerhalb eines benutzeraktionsbasierten Ereignishandlers ausgeführt werden. Das Nutzeraktionsverhalten hängt vom Zustand des Versprechens ab:
- Wenn das Versprechen aufgelöst wird (d.h. wenn die Erlaubnis erteilt wurde), wurde die Benutzeraktion nicht verbraucht, sodass das Skript anschließend APIs aufrufen kann, die eine Benutzeraktion erfordern.
- Wenn das Versprechen abgelehnt wird (d.h. die Erlaubnis wurde nicht erteilt), wurde die Benutzeraktion verbraucht, sodass das Skript nichts tun kann, was eine Aktion erfordert. Dies ist ein absichtlicher Schutz gegen Missbrauch — es verhindert, dass Skripte
requestStorageAccess()in einer Schleife aufrufen, bis der Benutzer die Aufforderung annimmt.
Ausnahmen
InvalidStateErrorDOMException-
Ausgelöst, wenn:
- Das aktuelle
Documentnoch nicht aktiv ist. - Der
types-Parameter angegeben ist und alle seine Eigenschaftenfalsesind.
- Das aktuelle
NotAllowedErrorDOMException-
Ausgelöst, wenn:
- Das Fenster des Dokuments kein sicherer Kontext ist.
- Die Nutzung durch eine
storage-accessPermissions Policy blockiert wird. - Das Dokument oder das oberste Dokument einen
null-Ursprung hat. - Das einbettende
<iframe>ist sandboxed, und derallow-storage-access-by-user-activation-Token ist nicht gesetzt. - Die Nutzung durch die Berechtigungsanfrage des Benutzeragenten zur Nutzung der API verweigert wird.
Beispiele
document.requestStorageAccess().then(
() => {
console.log("cookie access granted");
},
() => {
console.log("cookie access denied");
},
);
document.requestStorageAccess({ localStorage: true }).then(
(handle) => {
console.log("localStorage access granted");
handle.localStorage.setItem("foo", "bar");
},
() => {
console.log("localStorage access denied");
},
);
Hinweis: Siehe Verwendung der Storage Access API für ein vollständigeres Beispiel.
Spezifikationen
| Specification |
|---|
| The Storage Access API> # dom-document-requeststorageaccess> |