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>
), Zugriff auf Drittanbieter-Cookies und unpartitionierten Status zu beantragen. Dies ist relevant für Benutzeragenten, die standardmäßig den Zugriff auf Drittanbieter-Cookies 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 die Erlaubnis zum Zugriff auf Drittanbieter-Cookies bereits erteilt wurde, können Sie Permissions.query()
aufrufen und dabei den Funktionsnamen "storage-access"
angeben.
Hinweis:
Die Nutzung dieser Funktion kann durch eine auf Ihrem Server festgelegte Berechtigungsrichtlinie, storage-access
, blockiert werden. Zusätzlich muss das Dokument weitere browserspezifische Überprüfungen bestehen, wie Whitelists, Blacklists, geräteinterne Klassifizierungen, Benutzereinstellungen, Anti-Clickjacking-Heuristiken oder das Anfordern der ausdrücklichen Zustimmung des Benutzers.
Syntax
requestStorageAccess()
requestStorageAccess(types)
Parameter
types
Optional-
Ein Objekt, das Eigenschaften enthält, die steuern, welcher unpartitionierte Status 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.sessionStorage
zugänglich gemacht werden soll. localStorage
-
Ein Boolean, der angibt, dass
StorageAccessHandle.localStorage
zugänglich gemacht werden soll. indexedDB
-
Ein Boolean, der angibt, dass
StorageAccessHandle.indexedDB
zugänglich gemacht werden soll. locks
-
Ein Boolean, der angibt, dass
StorageAccessHandle.locks
zugänglich gemacht werden soll. caches
-
Ein Boolean, der angibt, dass
StorageAccessHandle.caches
zugä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 bereitgestellt wurde, erfüllt wird mit StorageAccessHandle
, wenn der Zugriff auf den im types
-Parameter angeforderten unpartitionierten Zustand gewährt wurde, und abgelehnt wird, wenn der Zugriff verweigert wurde.
requestStorageAccess()
-Anfragen werden automatisch abgelehnt, es sei denn, der eingebettete Inhalt verarbeitet gerade eine Benutzeraktion wie einen Tipp oder Klick (vorübergehende Aktivierung), oder die Erlaubnis wurde bereits zuvor erteilt. Wenn die Erlaubnis nicht zuvor erteilt wurde, müssen sie innerhalb eines benutzergesteuerten Ereignishandlers ausgeführt werden. Das Benutzeraktionsverhalten hängt vom Zustand des Versprechens ab:
- Wenn das Versprechen erfüllt 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 beabsichtigter Schutz gegen Missbrauch — es verhindert, dass Skripte
requestStorageAccess()
in einer Schleife aufrufen, bis der Benutzer die Eingabeaufforderung akzeptiert.
Ausnahmen
InvalidStateError
DOMException
-
Ausgelöst, wenn:
- Das aktuelle
Document
noch nicht aktiv ist. - Der
types
-Parameter bereitgestellt wird und alle seine Eigenschaftenfalse
sind.
- Das aktuelle
NotAllowedError
DOMException
-
Ausgelöst, wenn:
- Das Fenster des Dokuments ist kein sicherer Kontext.
- Die Nutzung wird durch eine
storage-access
Berechtigungsrichtlinie blockiert. - Das Dokument oder das oberste Dokument hat einen
null
-Ursprung. - Das einbettende
<iframe>
ist sandboxed, und das Tokenallow-storage-access-by-user-activation
ist nicht gesetzt. - Die Nutzung wird durch die Berechtigungsanfrage des Benutzeragenten zur Nutzung der API verweigert.
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ändigeren Beispiel.
Spezifikationen
Specification |
---|
The Storage Access API # dom-document-requeststorageaccess |