Opslag en cookies

Extensies kunnen cookies opslaan en toegang krijgen tot API's voor webopslag, net als een normale website. In sommige gevallen gedragen deze zich anders in extensies.

Ga naar browser.storage voor informatie over de Extensions API.

Opslag

Het is vaak wenselijk om opslag-API's van het webplatform te gebruiken in extensies. In dit gedeelte wordt het gedrag van deze API's in een extensiecontext verkend. Dit kan soms verschillen van hoe ze zich op het web gedragen.

Persistentie

Extensieopslag wordt niet gewist als een gebruiker browsegegevens wist. Dit geldt voor alle gegevens die zijn opgeslagen met API's voor webopslag (zoals Local Storage en IndexedDB).

Extensies vallen standaard onder de normale quotabeperkingen voor opslag. Je kunt dit controleren door navigator.storage.estimate() aan te roepen. Opslag kan ook worden verwijderd bij een hoge geheugendruk, maar dit gebeurt zelden. Zo voorkomt u dit:

  • Vraag het recht "unlimitedStorage" aan. Dit recht heeft invloed op zowel de extensie- als de webopslag-API's en vrijstelt extensies van zowel quotumbeperkingen als verwijdering.
  • Bel navigator.storage.persist() voor bescherming tegen uitzetting.

Extensieopslag wordt gedeeld door de oorsprong van de extensie, waaronder de service worker van de extensie, extensiepagina's (waaronder pop-ups en het zijvenster) en documenten buiten het scherm. In contentscripts wordt bij aanroepen van API's voor webopslag toegang verkregen tot gegevens van de hostpagina waarop het contentscript is geïnjecteerd en niet tot de extensie.

Toegang in service workers

De API's IndexedDB en Cache Storage zijn toegankelijk in service workers. Lokale opslag en Sessieopslag zijn dat niet.

Als je vanuit de service worker toegang nodig hebt tot Local Storage of Session Storage, gebruik je een document buiten het scherm.

Partitionering

Partitioneren is het proces waarbij sleutels worden geïntroduceerd voor opgeslagen gegevens om te beperken waar deze kunnen worden geopend. Opslag is van oudsher gebaseerd op de oorsprong.

Vanaf Chrome 115 introduceert opslagpartitionering wijzigingen in de manier waarop partitioneringssleutels worden gedefinieerd om bepaalde typen cross-site tracking te voorkomen. In de praktijk betekent dit dat als site A een iframe insluit dat site B bevat, site B geen toegang heeft tot dezelfde opslag als wanneer er rechtstreeks naar site B wordt genavigeerd.

Er zijn 2 uitzonderingen om de impact hiervan in extensies te beperken:

  • Als een pagina met het schema chrome-extension:// is ingesloten op een site, is opslagpartitionering niet van toepassing en heeft de extensie toegang tot de partitie op het hoogste niveau.
  • Als een pagina met het chrome-extension://-schema een iframe bevat en de extensie hostrechten heeft voor de site die wordt ingesloten, heeft die site ook toegang tot de partitie op het hoogste niveau.

Cookies

Cookies bieden een manier om sleutel/waarde-paren op te slaan die aan een specifiek domein en pad zijn gekoppeld. Ze hebben beperkte waarde in extensies, maar inzicht in hun gedrag kan nuttig zijn als je een specifieke use case hebt of een script van derden hebt gebundeld dat ze in de implementatie gebruikt.

Beveiligde cookies

Het cookiekenmerk Secure wordt alleen ondersteund voor het schema https://. Daarom kunnen chrome-extension:// pagina's geen cookies instellen met dit kenmerk.

Dit betekent ook dat extensiepagina's geen andere cookiekenmerken kunnen gebruiken waarvoor het kenmerk Secure vereist is:

Partitionering en SameSite-gedrag

Cookies die zijn ingesteld op pagina's van chrome-extension://, gebruiken altijd SameSite=Lax. Daarom kunnen cookies die door een extensie in de eigen oorsprong worden ingesteld, nooit worden geopend in frames en is partitionering niet relevant.

Voor cookies die zijn gekoppeld aan sites van derden, zoals voor een site van derden die in een frame op een extensiepagina wordt geladen of een verzoek dat vanaf een extensiepagina naar een oorsprong van derden wordt gestuurd, gedragen cookies zich hetzelfde als op het web, met 2 uitzonderingen:

  • Cookies van derden worden nooit geblokkeerd, zelfs niet in subframes, als de pagina op het hoogste niveau voor een bepaald tabblad een chrome-extension://-pagina is.
  • Verzoeken van een extensie aan een derde worden behandeld als same-site als de extensie hostrechten heeft voor de derde. Dit betekent dat er SameSite=Strictcookies kunnen worden gestuurd. Dit geldt alleen voor netwerkverzoeken, niet voor toegang via document.cookie in JavaScript. Het geldt niet als cookies van derden worden geblokkeerd.

Instellingen voor cookies van derden worden beïnvloed door het werk van Privacy Sandbox en worden aangepast aan de tijdlijn.

De browser.cookies API biedt beheer over de partitiesleutel die bij elke API-methode moet worden gebruikt. Ga naar de API-referentie voor meer informatie.