cookies

Ermöglicht Erweiterungen, Cookies abzurufen, zu setzen und zu entfernen, sowie Benachrichtigungen zu erhalten, wenn sie sich ändern.

Berechtigungen

Damit eine Erweiterung diese API nutzen kann, muss sie die "cookies" API-Berechtigung in ihrer manifest.json-Datei und Host-Berechtigungen für alle Seiten angeben, auf deren Cookies sie zugreifen möchte. Die Erweiterung kann alle Cookies abrufen, setzen oder entfernen, die von einer URL mit passenden Host-Berechtigungen 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.
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.
*://*.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.

Tracking-Schutz

Tracker verwenden Drittanbieter-Cookies, d.h. Cookies, die von einer anderen Website als der, die Sie besuchen, gesetzt werden, um die von Ihnen besuchten Websites zu identifizieren. Zum Beispiel:

  1. Sie besuchen a-shopping-site.com, das ad-tracker.com verwendet, um seine Anzeigen im Web auszuliefern. ad-tracker.com setzt ein Cookie, das mit der Domain ad-tracker.com verknüpft ist. Während Sie auf a-shopping-site.com sind, erhält ad-tracker.com Informationen über die Produkte, die Sie durchsuchen.
  2. Sie besuchen jetzt a-news-site.com, das ad-tracker.com verwendet, um Anzeigen auszuliefern. ad-tracker.com liest sein Cookie und verwendet die von a-shopping-site.com gesammelten Informationen, um zu entscheiden, welche Anzeigen Ihnen angezeigt werden.

Firefox enthält zwei Funktionen, um Tracking zu verhindern: dynamische Partitionierung und First-Party-Isolierung. Diese Funktionen trennen Cookies, sodass Tracker keine Verbindung zwischen besuchten Websites herstellen können. So kann im vorangegangenen Beispiel ad-tracker.com das auf a-news-site.com erstellte Cookie nicht sehen, wenn a-shopping-site.com besucht wird.

Ab Firefox 103 ist die dynamische Partitionierung die standardmäßige Funktion. Wenn jedoch der Benutzer oder eine Erweiterung die First-Party-Isolierung aktiviert, hat diese Vorrang vor der dynamischen Partitionierung.

Hinweis: Wenn das private Browsen die dynamische Partitionierung verwendet, können beim normalen Browsen Cookies möglicherweise nicht partitioniert werden. Siehe Status der Partitionierung in Firefox für Details.

Speicher-Partitionierung

Bei der Verwendung der dynamischen Partitionierung partitioniert Firefox den für JavaScript-APIs zugänglichen Speicher nach oberster Seite, während er angemessenen Zugang zu nicht partitioniertem Speicher bietet, 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 nach der scheme-reichen URL der obersten Website gekennzeichnet und, wenn die dynamische Partitionierung aktiv ist, ist der Schlüsselwert über die partitionKey.topLevelSite-Eigenschaft in der Cookies-API verfügbar, zum Beispiel partitionKey: {topLevelSite: "http://site"}.

Generell befinden sich Dokumente der obersten Ebene in nicht partitioniertem Speicher, während Drittanbieter-iFrames sich in partitioniertem Speicher befinden. Wenn ein Partitionierungsschlüssel nicht bestimmt werden kann, wird der Standard (nicht partitionierter Speicher) verwendet. Zum Beispiel können alle HTTP(S)-Seiten als Partitionierungsschlüssel verwendet werden, moz-extension:--URLs jedoch nicht. Daher verwenden iFrames in Firefox-Erweiterungsdokumenten keinen partitionierten Speicher.

Standardmäßig arbeiten cookies.get(), cookies.getAll(), cookies.set() und cookies.remove() mit Cookies in nicht partitioniertem Speicher. Um mit Cookies in partitioniertem Speicher in diesen APIs zu arbeiten, muss topLevelSite in partitionKey gesetzt werden. Eine Ausnahme bildet getAll, wo das Setzen von partitionKey ohne topLevelSite Cookies in partitioniertem und nicht partitioniertem 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 deren Wert an cookies.set() und cookies.remove() übergeben.

First-Party-Isolierung

Wenn die First-Party-Isolierung aktiviert ist, werden Cookies durch die Domain der ursprünglich besuchten Seite qualifiziert (im Wesentlichen die dem Benutzer in der URL-Leiste angezeigte Domain, auch bekannt als "First-Party-Domain").

Die First-Party-Isolierung kann vom Benutzer aktiviert werden, indem die Konfiguration des Browsers angepasst wird, und von Erweiterungen durch die Einstellung firstPartyIsolate in der privacy-API gesetzt werden. Beachten Sie, dass die First-Party-Isolierung standardmäßig im Tor-Browser aktiviert ist.

Die cookies-API stellt die First-Party-Domain mithilfe des firstPartyDomain-Attributs dar. Alle Cookies, die gesetzt werden, während die First-Party-Isolierung aktiviert ist, haben dieses Attribut auf die Domain der ursprünglichen Seite gesetzt. Im vorhergehenden Beispiel ist dies a-shopping-site.com für ein Cookie und a-news-site.com für das andere. Wenn die First-Party-Isolierung deaktiviert ist, haben alle von Websites gesetzten Cookies diese Eigenschaft auf einen leeren String gesetzt.

Die APIs cookies.get(), cookies.getAll(), cookies.set() und cookies.remove() akzeptieren alle eine firstPartyDomain-Option.

Wenn die First-Party-Isolierung aktiviert ist, müssen Sie diese Option angeben, andernfalls schlägt der API-Aufruf 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 das ruft alle Cookies ab, unabhängig davon, ob sie einen nicht-leeren Wert für firstPartyDomain haben oder nicht.

Wenn die First-Party-Isolierung deaktiviert ist, ist der firstPartyDomain-Parameter optional und standardmäßig ein leerer String. Ein nicht-leerer String kann verwendet werden, um First-Party-Isolierungs-Cookies abzurufen oder zu ändern. Ebenso gibt das Übergeben von null als firstPartyDomain an getAll() alle Cookies zurück.

Typen

cookies.Cookie

Stellt Informationen über ein HTTP-Cookie dar.

cookies.CookieStore

Stellt einen Cookie-Speicher im Browser dar.

cookies.OnChangedCause

Stellt den Grund dar, warum ein Cookie geändert wurde.

cookies.SameSiteStatus

Stellt den Same-Site-Status des Cookies dar.

Methoden

cookies.get()

Ruft Informationen über ein einzelnes Cookie ab.

cookies.getAll()

Ruft alle Cookies ab, die zu einem gegebenen Satz von Filtern passen.

cookies.set()

Setzt ein Cookie mit den angegebenen Cookie-Daten; kann gleichwertige Cookies überschreiben, falls sie existieren.

cookies.remove()

Löscht ein Cookie nach Namen.

cookies.getAllCookieStores()

Listet alle vorhandenen Cookie-Speicher auf.

Ereignishandler

cookies.onChanged

Wird ausgelöst, wenn ein Cookie gesetzt oder entfernt wird.

Beispielerweiterungen

Browser-Kompatibilität

Hinweis: Diese API basiert auf Chromiums chrome.cookies API. Diese Dokumentation ist abgeleitet von cookies.json im Chromium-Code.