Les extensions peuvent stocker des cookies et accéder aux API de stockage Web de la même manière qu'un site Web normal. Toutefois, dans certains cas, leur comportement est différent dans les extensions.
Pour en savoir plus sur l'API d'extension, consultez browser.storage.
Stockage
Il est souvent souhaitable d'utiliser les API de stockage de la plate-forme Web dans les extensions. Cette section explore le comportement de ces API dans un contexte d'extension, qui peut parfois différer de leur comportement sur le Web.
Persistance
Le stockage des extensions n'est pas effacé lorsqu'un utilisateur efface ses données de navigation. Cela s'applique à toutes les données stockées à l'aide des API de stockage Web (telles que LocalStorage et IndexedDB).
Par défaut, les extensions sont soumises aux restrictions de quota normales concernant le stockage, que vous pouvez vérifier en appelant navigator.storage.estimate(). Le stockage peut également être supprimé en cas de forte saturation de la mémoire, mais cela est rare. Pour éviter cela :
- Demandez l'autorisation
"unlimitedStorage", qui affecte les API de stockage Web et d'extension, et qui exempte les extensions des restrictions de quota et de l'éviction. - Appelez le
navigator.storage.persist()pour vous protéger contre l'expulsion.
L'espace de stockage des extensions est partagé dans l'origine de l'extension, y compris le service worker de l'extension, toutes les pages d'extension (y compris les pop-ups et le panneau latéral) et les documents hors écran. Dans les scripts de contenu, l'appel des API de stockage Web permet d'accéder aux données de la page hôte sur laquelle le script de contenu est injecté, et non à l'extension.
Accès dans les service workers
Les API IndexedDB et Cache Storage sont accessibles dans les service workers. Toutefois, le stockage local et le stockage de session ne le sont pas.
Si vous devez accéder au stockage local ou au stockage de session à partir du service worker, utilisez un document hors écran.
Partitionnement
Le partitionnement consiste à introduire des clés pour les données stockées afin de limiter les emplacements où elles sont accessibles. Historiquement, le stockage était associé à l'origine.
À partir de Chrome 115, le partitionnement du stockage modifie la façon dont les clés de partitionnement sont définies pour empêcher certains types de suivi intersites. En pratique, cela signifie que si le site A intègre un iFrame contenant le site B, le site B ne pourra pas accéder au même espace de stockage que celui dont il dispose habituellement lorsqu'il est consulté directement.
Pour atténuer l'impact de cette mesure dans les extensions, deux exemptions s'appliquent :
- Si une page avec le schéma
chrome-extension://est intégrée à un site, le partitionnement du stockage ne s'applique pas et l'extension a accès à sa partition de premier niveau. - Si une page avec le schéma
chrome-extension://inclut un iFrame et que l'extension dispose d'autorisations d'hôte pour le site qu'elle intègre, ce site aura également accès à sa partition de premier niveau.
Cookies
Les cookies permettent de stocker des paires clé-valeur associées à un domaine et à un chemin d'accès spécifiques. Elles ont une valeur limitée dans les extensions, mais comprendre leur comportement peut être utile si vous avez un cas d'utilisation spécifique ou si vous avez regroupé un script tiers qui les utilise dans son implémentation.
Cookies sécurisés
L'attribut de cookie Secure n'est compatible qu'avec le schéma https://. Par conséquent, les pages chrome-extension:// ne peuvent pas définir de cookies avec cet attribut.
Cela signifie également que les pages d'extension ne peuvent pas utiliser d'autres attributs de cookie pour lesquels l'attribut Secure est requis :
Partitionnement et comportement SameSite
Les cookies définis sur les pages chrome-extension:// utilisent toujours SameSite=Lax.
Par conséquent, les cookies définis par une extension sur sa propre origine ne peuvent jamais être consultés dans les frames, et le partitionnement n'est pas pertinent.
Pour les cookies associés à des sites tiers, comme un site tiers chargé dans un frame sur une page d'extension ou une requête envoyée depuis une page d'extension vers une origine tierce, les cookies se comportent de la même manière que sur le Web, sauf pour deux aspects :
- Les cookies tiers ne sont jamais bloqués, même dans les sous-frames, si la page de premier niveau d'un onglet donné est une page
chrome-extension://. - Les requêtes d'une extension à un tiers sont traitées comme des requêtes sur le même site si l'extension dispose d'autorisations d'hôte pour le tiers. Cela signifie que les cookies
SameSite=Strictpeuvent être envoyés. Notez que cela ne s'applique qu'aux requêtes réseau, et non à l'accès viadocument.cookieen JavaScript. Cela ne s'applique pas non plus si les cookies tiers sont bloqués.
Notez que les paramètres concernant les cookies tiers sont affectés par le projet Privacy Sandbox et sont ajustés en fonction de sa chronologie.
L'API browser.cookies permet de contrôler la clé de partition à utiliser avec chaque méthode d'API. Pour en savoir plus, consultez la documentation de référence de l'API.