Stockage et cookies

Les extensions peuvent stocker des cookies et accéder aux API de stockage Web de la même manière qu'un site Web standard. Toutefois, dans certains cas, ils se comportent différemment dans les extensions.

Consultez chrome.storage pour en savoir plus sur l'API de l'extension.

Stockage

Il est souvent souhaitable d'utiliser des API de stockage de plate-forme Web dans les extensions. Cette section explore le comportement de ces API dans le contexte d'une extension, qui peut parfois différer de leur comportement sur le Web.

Persistance

L'espace de stockage de l'extension n'est pas effacé lorsqu'un utilisateur efface les données de navigation. Cela s'applique à toutes les données stockées à l'aide d'API de stockage Web (telles que le stockage local et IndexedDB).

Par défaut, les extensions sont soumises aux restrictions de quota normales sur le stockage, qui peuvent être vérifiées en appelant navigator.storage.estimate(). Le stockage peut également être évincé en cas de forte pression sur la mémoire, bien que cela soit rare. Pour éviter cela:

  • Demandez l'autorisation "unlimitedStorage", qui affecte à la fois les API d'extension et de stockage Web, et exempte les extensions des restrictions de quota et de l'éviction.
  • Appelez navigator.storage.persist() pour vous protéger contre l'éviction.

Le stockage des extensions est partagé sur 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 d'API de stockage Web accède 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 depuis les service workers. En revanche, ce n'est pas le cas du stockage local et du stockage de session.

Si vous devez accéder au stockage local ou de session depuis le service worker, utilisez un document hors écran.

Partitionnement

Le partitionnement est l'introduction de clés pour les données stockées afin de limiter l'endroit où elles sont accessibles. Le stockage a toujours été associé par origine.

À partir de Chrome 115, le partitionnement du stockage introduit des modifications dans la définition des clés de partitionnement afin d'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 qu'en accédant directement à ce site.

Pour limiter cet impact dans les extensions, deux exceptions s'appliquent:

  • Si une page avec le schéma chrome-extension:// est intégrée à un site, le partitionnement du stockage ne s'appliquera pas et l'extension aura 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 spécifiques. Elles ont une valeur limitée dans les extensions, mais il peut être utile de comprendre leur comportement 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 lorsque l'attribut Secure est obligatoire:

Partitionnement et comportement de 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 sont jamais accessibles dans les frames, et le partitionnement n'est pas pertinent.

Pour les cookies associés à des sites tiers (par exemple, pour 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 le Web, sauf pour deux raisons:

  • 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 envoyées par une extension à un tiers sont traitées comme des requêtes SameSite si l'extension dispose d'autorisations d'hôte pour le tiers. Cela signifie que les cookies SameSite=Strict peuvent être envoyés. Notez que cela ne s'applique qu'aux requêtes réseau, et non à l'accès via document.cookie en JavaScript. Il ne s'applique pas si les cookies tiers sont bloqués.

Notez que les paramètres liés aux cookies tiers sont affectés par le fonctionnement de la Privacy Sandbox et sont ajustés en fonction de son calendrier.

L'API chrome.cookies permet de contrôler la clé de partition à utiliser avec chaque méthode API. Pour en savoir plus, consultez la documentation de référence de l'API.