Las extensiones pueden almacenar cookies y acceder a las APIs de almacenamiento web de manera similar a un sitio web normal. Sin embargo, en algunos casos, estas se comportan de forma diferente en las extensiones.
Consulta chrome.storage
para obtener información sobre la API de extensiones.
Almacenamiento
A menudo, se recomienda usar APIs de almacenamiento de plataformas web en extensiones. En esta sección, se explora el comportamiento de estas APIs en el contexto de una extensión, que a veces puede diferir en su comportamiento en la Web.
Persistencia
El almacenamiento de la extensión no se libera cuando un usuario borra los datos de navegación. Esto se aplica a todos los datos almacenados mediante las APIs de almacenamiento web (como Local Storage y IndexedDB).
De forma predeterminada, las extensiones están sujetas a las restricciones de cuota normales de almacenamiento, que se pueden verificar llamando a navigator.storage.estimate()
. El almacenamiento también se puede expulsar bajo mucha presión de memoria, aunque esto es poco frecuente. Para evitar que esto suceda, sigue estos pasos:
- Solicita el permiso
"unlimitedStorage"
, que afecta a las APIs de extensiones y de almacenamiento web, y exime a las extensiones de las restricciones de cuota y la expulsión. - Llama a
navigator.storage.persist()
para obtener protección contra la expulsión.
El almacenamiento de la extensión se comparte en todo el origen de la extensión, incluido el service worker de extensiones, las páginas de la extensión (incluidas las ventanas emergentes y el panel lateral) y los documentos fuera de pantalla. En las secuencias de comandos de contenido, la llamada a las APIs de almacenamiento web accede a los datos de la página de host en la que se inserta la secuencia de comandos de contenido y no de la extensión.
Acceso en service workers
Las APIs de IndexedDB y Cache Storage son accesibles en los service workers. Sin embargo, Local Storage y Session Storage no lo son.
Si necesitas acceder al almacenamiento local o al almacenamiento de la sesión desde el service worker, usa un documento fuera de pantalla.
Partición
La partición es donde se ingresan las claves para los datos almacenados a fin de limitar el acceso a ellos. El almacenamiento siempre ha sido clave por el origen.
A partir de Chrome 115, la partición de almacenamiento presenta cambios en la forma en que se definen las claves de partición para evitar ciertos tipos de seguimiento entre sitios. En la práctica, esto significa que si el sitio A incorpora un iframe que contiene el sitio B, el sitio B no podrá acceder al mismo almacenamiento al que tendría normalmente cuando se navegue directamente al sitio.
Para mitigar el impacto de esto en las extensiones, se aplican dos exenciones:
- Si una página con el esquema
chrome-extension://
está incorporada en algún sitio, no se aplicará la partición de almacenamiento, y la extensión tendrá acceso a su partición de nivel superior. - Si una página con el esquema
chrome-extension://
incluye un iframe y la extensión tiene permisos de host para el sitio que está incorporando, ese sitio también tendrá acceso a su partición de nivel superior.
Unas galletas
Las cookies proporcionan una manera de almacenar pares clave-valor asociados con un dominio y una ruta de acceso específicos. Tienen un valor limitado para las extensiones, pero comprender su comportamiento puede ser útil si tienes un caso de uso específico o si empaquetaste una secuencia de comandos de terceros que las usa en su implementación.
Cookies seguras
El atributo de cookie Secure
solo es compatible con el esquema https://
. Por lo tanto, las páginas de chrome-extension://
no pueden establecer cookies con este atributo.
Esto también significa que las páginas de extensiones no pueden usar otros atributos de cookies en los que se requiera el atributo Secure
:
Comportamiento de la partición y de SameSite
Las cookies establecidas en las páginas chrome-extension:// siempre usan SameSite=Lax
.
En consecuencia, nunca se puede acceder a las cookies establecidas por una extensión en su propio origen en los marcos y la partición no es relevante.
En el caso de las cookies asociadas con sitios de terceros, como las de sitios de terceros cargados en un marco en una página de una extensión o una solicitud realizada desde una página de extensión a un origen de terceros, las cookies se comportan igual que la Web, excepto de dos maneras:
- Las cookies de terceros nunca se bloquean, incluso en submarcos, si la página de nivel superior de una pestaña determinada es una página
chrome-extension://
. - Las solicitudes de una extensión a un tercero se tratan como en el mismo sitio si la
extensión tiene permisos de host para el tercero. Esto significa que se pueden enviar
SameSite=Strict
cookies. Ten en cuenta que esto solo se aplica a las solicitudes de red, no al acceso a través dedocument.cookie
en JavaScript, y no se aplica si se bloquean las cookies de terceros.
Ten en cuenta que la configuración de las cookies de terceros se ve afectada por el trabajo de Privacy Sandbox y se ajusta según su cronograma.
La API de chrome.cookies
proporciona control sobre la clave de partición que se debe usar con cada método de API. Para obtener más información, consulta la referencia de la API.