cookies
Ermöglicht Erweiterungen, Cookies zu erhalten, zu setzen und zu entfernen, sowie benachrichtigt zu werden, wenn sie sich ändern.
Berechtigungen
Damit eine Erweiterung diese API nutzen kann, muss sie die "cookies"
API-Berechtigung in ihrer manifest.json Datei angeben und Host-Berechtigungen für alle Seiten, auf deren Cookies sie zugreifen möchte. Die Erweiterung kann alle Cookies abrufen, setzen oder entfernen, die von einer URL, die den Host-Berechtigungen entspricht, gelesen, geschrieben oder gelöscht werden können. Zum Beispiel:
http://*.example.com/
-
Eine Erweiterung mit dieser Host-Berechtigung kann:
- Ein nicht sicheres Cookie für
www.example.com
mit beliebigem Pfad lesen. - Ein sicheres oder nicht sicheres Cookie für
www.example.com
mit beliebigem Pfad schreiben.
Sie kann nicht:
- Ein sicheres Cookie für
www.example.com
lesen.
- Ein nicht sicheres Cookie für
http://www.example.com/
-
Eine Erweiterung mit dieser Host-Berechtigung kann:
- Ein nicht sicheres Cookie für
www.example.com
mit beliebigem Pfad lesen. - Ein nicht sicheres Cookie für
.example.com
mit beliebigem Pfad lesen. - Ein sicheres oder nicht sicheres Cookie für
www.example.com
mit beliebigem Pfad schreiben. - Ein sicheres oder nicht sicheres Cookie für
.example.com
mit beliebigem Pfad schreiben.
Sie kann nicht:
- Ein Cookie für
foo.example.com
lesen oder schreiben. - Ein Cookie für
foo.www.example.com
lesen oder schreiben.
- Ein nicht sicheres Cookie für
*://*.example.com/
-
Eine Erweiterung mit dieser Host-Berechtigung kann:
- Ein sicheres oder nicht sicheres Cookie für
www.example.com
mit beliebigem Pfad lesen oder schreiben.
- Ein sicheres oder nicht sicheres Cookie für
Verfolgungsschutz
Tracker verwenden Drittanbieter-Cookies, das heißt, Cookies, die von einer anderen Website als der, die Sie gerade besuchen, gesetzt werden, um die von Ihnen besuchten Websites zu identifizieren. Zum Beispiel:
- Sie besuchen
a-shopping-site.com
, diead-tracker.com
verwendet, um ihre Werbung im Web auszuliefern.ad-tracker.com
setzt ein Cookie, das mit derad-tracker.com
Domain verknüpft ist. Während Sie aufa-shopping-site.com
sind, erhältad-tracker.com
Informationen über die Produkte, die Sie durchsuchen. - Sie besuchen jetzt
a-news-site.com
, diead-tracker.com
verwendet, um Werbung anzuzeigen.ad-tracker.com
liest sein Cookie und verwendet die vona-shopping-site.com
gesammelten Informationen, um zu entscheiden, welche Werbung Ihnen angezeigt werden soll.
Firefox enthält zwei Funktionen, um Tracking zu verhindern: dynamische Partitionierung und First-Party-Isolation. Diese Funktionen trennen Cookies, sodass Tracker keine Verbindung zwischen besuchten Websites herstellen können. So kann ad-tracker.com
im obigen Beispiel das bei a-news-site.com
erstellte Cookie beim Besuch von a-shopping-site.com
nicht sehen.
Ab Firefox 103 ist die dynamische Partitionierung die Standardfunktion. Wird jedoch die First-Party-Isolation von dem Benutzer oder einer Erweiterung aktiviert, hat sie Vorrang vor der dynamischen Partitionierung.
Hinweis: Wenn das private Surfen die dynamische Partitionierung verwendet, könnte das normale Surfen keine Partitionierung von Cookies haben. Siehe Status der Partitionierung in Firefox für Details.
Speicherpartitionierung
Bei der Verwendung von dynamischer Partitionierung partitioniert Firefox den Speicher, der JavaScript-APIs zugänglich ist, nach oberster Seite, während angemessener Zugang zu unpartitioniertem Speicher gewährt wird, um gängige Anwendungsfälle zu ermöglichen. Diese Funktion wird schrittweise eingeführt. Siehe Status der Partitionierung in Firefox für Implementierungsdetails.
Speicherpartitionen werden durch die schematische URL der obersten Website bestimmt, und wenn die dynamische Partitionierung aktiv ist, ist der Schlüsselwert über die partitionKey.topLevelSite
Eigenschaft in der Cookies-API verfügbar, z.B. partitionKey: {topLevelSite: "http://site"}
.
Im Allgemeinen sind oberste Dokumente im unpartitionierten Speicher, während Drittanbieter-Iframes im partitionierten Speicher sind. Wenn ein Partitionsschlüssel nicht bestimmt werden kann, wird der Standardwert (unpartitionierter Speicher) verwendet. Zum Beispiel können während alle HTTP(S)-Seiten als Partitionsschlüssel verwendet werden, moz-extension:-
URLs nicht. Daher verwenden Iframes in den Erweiterungsdokumenten von Firefox keinen partitionierten Speicher.
Standardmäßig arbeiten cookies.get()
, cookies.getAll()
, cookies.set()
und cookies.remove()
mit Cookies im unpartitionierten Speicher. Um mit Cookies im partitionierten Speicher in diesen APIs zu arbeiten, muss topLevelSite
in partitionKey
gesetzt werden. Die Ausnahme ist getAll
, wobei das Setzen von partitionKey
ohne topLevelSite
Cookies im partitionierten und unpartitionierten Speicher zurückgibt. cookies.onChanged
wird für jedes Cookie ausgelöst, auf das die Erweiterung zugreifen kann, einschließlich Cookies im partitionierten Speicher. Um sicherzustellen, dass das richtige Cookie geändert wird, sollten Erweiterungen die cookie.partitionKey
Eigenschaft aus dem Ereignis lesen und ihren Wert an cookies.set()
und cookies.remove()
übergeben.
First-Party-Isolation
Wenn die First-Party-Isolation aktiviert ist, werden Cookies durch die Domain der ursprünglichen Seite qualifiziert, die der Benutzer besucht hat (im Wesentlichen die Domain, die dem Benutzer in der URL-Leiste angezeigt wird, auch bekannt als "First-Party-Domain").
First-Party-Isolation kann von dem Benutzer aktiviert werden, indem die Konfiguration des Browsers angepasst wird, und kann von Erweiterungen mittels der firstPartyIsolate
Einstellung in der privacy
API gesetzt werden. Beachten Sie, dass die First-Party-Isolation standardmäßig im Tor Browser aktiviert ist.
Die cookies
API repräsentiert die First-Party-Domain mittels des firstPartyDomain
Attributs. Alle Cookies, die gesetzt werden, während die First-Party-Isolation aktiv ist, haben dieses Attribut auf die Domain der ursprünglichen Seite gesetzt. Im obigen Beispiel wäre dies a-shopping-site.com
für ein Cookie und a-news-site.com
für das andere. Wenn die First-Party-Isolation deaktiviert ist, haben alle von Websites gesetzten Cookies diese Eigenschaft auf einen leeren String gesetzt bekommen.
Die cookies.get()
, cookies.getAll()
, cookies.set()
und cookies.remove()
APIs akzeptieren alle eine firstPartyDomain
Option.
Wenn die First-Party-Isolation aktiviert ist, müssen Sie diese Option angeben, oder der API-Aufruf schlägt fehl und gibt ein abgelehntes Versprechen zurück. Für get()
, set()
und remove()
müssen Sie einen String-Wert übergeben. Für getAll()
können Sie hier auch null
übergeben, und dies ruft alle Cookies ab, unabhängig davon, ob sie einen nicht-leeren Wert für firstPartyDomain
haben oder nicht.
Wenn die First-Party-Isolation deaktiviert ist, ist der firstPartyDomain
Parameter optional und standardmäßig auf einen leeren String gesetzt. Ein nicht-leerer String kann verwendet werden, um First-Party-Isolation Cookies abzurufen oder zu ändern. Ebenso bewirkt das Übergeben von null
als firstPartyDomain
an getAll()
, dass alle Cookies zurückgegeben werden.
Typen
-
Repräsentiert Informationen über ein HTTP-Cookie.
-
Repräsentiert einen Cookie-Speicher im Browser.
-
Repräsentiert den Grund, warum ein Cookie geändert wurde.
-
Repräsentiert den Same-Site-Status des Cookies.
Methoden
-
Ruft Informationen über ein einzelnes Cookie ab.
-
Ruft alle Cookies ab, die einem gegebenen Filtersatz entsprechen.
-
Setzt ein Cookie mit den angegebenen Cookie-Daten; kann vorhandene äquivalente Cookies überschreiben, wenn sie existieren.
-
Löscht ein Cookie nach Namen.
-
Listet alle vorhandenen Cookie-Speicher auf.
Ereignishandler
-
Wird ausgelöst, wenn ein Cookie gesetzt oder entfernt wird.
Beispielerweiterungen
Browser-Kompatibilität
Report problems with this compatibility data on GitHubdesktop | mobile | ||||||
---|---|---|---|---|---|---|---|
Cookie | |||||||
Cookie.firstPartyDomain | |||||||
Cookie.partitionKey | |||||||
Cookie.sameSite | |||||||
CookieStore | |||||||
CookieStore.id | |||||||
CookieStore.incognito | |||||||
CookieStore.tabIds | |||||||
OnChangedCause | |||||||
get | |||||||
get.firstPartyDomain | |||||||
get.partitionKey | |||||||
getAll | |||||||
getAll.firstPartyDomain | |||||||
getAll.partitionKey | |||||||
getAllCookieStores | |||||||
onChanged | |||||||
onChanged.partitionKey | |||||||
remove | |||||||
remove.firstPartyDomain | |||||||
remove.partitionKey | |||||||
sameSiteStatus | |||||||
sameSiteStatus.lax | |||||||
sameSiteStatus.no_restriction | |||||||
sameSiteStatus.strict | |||||||
sameSiteStatus.unspecified | |||||||
set | |||||||
set.firstPartyDomain | |||||||
set.partitionKey | |||||||
set.sameSite |
Legend
Tip: you can click/tap on a cell for more information.
- Full support
- Full support
- Partial support
- Partial support
- No support
- No support
- See implementation notes.
- Has more compatibility info.
Hinweis:
Diese API basiert auf Chromium's chrome.cookies
API. Diese Dokumentation ist abgeleitet von cookies.json
im Chromium-Code.