Armazenamento e cookies

As extensões podem armazenar cookies e acessar APIs de armazenamento da Web de maneira semelhante a um site normal. No entanto, em alguns casos, elas se comportam de maneira diferente nas extensões.

Consulte chrome.storage para ver informações sobre a API de extensão.

Storage

Geralmente, é desejável usar APIs de armazenamento de plataforma da Web em extensões. Esta seção explora o comportamento dessas APIs em um contexto de extensão, que às vezes pode variar de acordo com o comportamento delas na Web.

Persistência

O armazenamento de extensões não é apagado quando um usuário limpa os dados de navegação. Isso se aplica a qualquer dado armazenado usando APIs de armazenamento da Web (como Local Storage e IndexedDB).

Por padrão, as extensões estão sujeitas às restrições normais de cota no armazenamento, que podem ser verificadas chamando navigator.storage.estimate(). O armazenamento também pode ser excluído sob grande pressão de memória, embora isso seja raro. Para evitar isso:

  • Solicite a permissão "unlimitedStorage", que afeta as APIs de extensão e de armazenamento da Web e isenta as extensões de restrições de cota e remoção.
  • Chame navigator.storage.persist() para proteção contra remoção.

O armazenamento é compartilhado por toda a origem da extensão, incluindo o service worker, todas as páginas da extensão (incluindo pop-ups e o painel lateral) e documentos fora da tela. Em scripts de conteúdo, chamar APIs de armazenamento da Web acessa dados da página do host em que o script de conteúdo é injetado, e não da extensão.

Acesso em service workers

As APIs IndexedDB e Armazenamento de cache são acessíveis nos service workers. No entanto, Armazenamento local e Armazenamento de sessão não são.

Se for necessário acessar o armazenamento local ou o armazenamento de sessão do service worker, use um documento fora da tela.

Particionamento

O particionamento é onde as chaves são introduzidas para os dados armazenados a fim de limitar onde eles podem ser acessados. O armazenamento sempre foi codificado por origem.

A partir do Chrome 115, o particionamento de armazenamento apresenta mudanças na forma como as chaves de particionamento são definidas para impedir determinados tipos de rastreamento entre sites. Na prática, isso significa que, se o site A incorporar um iframe contendo o site B, o site B não vai poder acessar o mesmo armazenamento que normalmente teria se fosse acessado diretamente.

Para reduzir esse impacto nas extensões, há duas isenções:

  • Se uma página com o esquema chrome-extension:// for incorporada a qualquer site, o particionamento de armazenamento não será aplicado, e a extensão terá acesso à partição de nível superior.
  • Se uma página com o esquema chrome-extension:// incluir um iframe e a extensão tiver permissões de host para o site que está sendo incorporado, esse site também terá acesso à respectiva partição de nível superior.

Cookies

Os cookies fornecem uma maneira de armazenar pares de chave-valor associados a um domínio e um caminho específicos. Elas têm valor limitado em extensões, mas entender o comportamento delas pode ser útil se você tiver um caso de uso específico ou tiver agrupado um script de terceiros que as usa na implementação.

Cookies seguros

O atributo de cookie Secure é compatível apenas com o esquema https://. Consequentemente, as páginas do chrome-extension:// não podem definir cookies com esse atributo.

Isso também significa que as páginas de extensão não podem usar outros atributos de cookies em que o atributo Secure é obrigatório:

Particionamento e comportamento do SameSite

Os cookies definidos nas páginas chrome-extension:// sempre usam SameSite=Lax. Consequentemente, os cookies definidos por uma extensão na própria origem nunca podem ser acessados em frames, e o particionamento não é relevante.

Para cookies associados a sites de terceiros, como um site de terceiros carregado em um frame em uma página de extensão ou uma solicitação feita de uma página de extensão para uma origem de terceiros, os cookies se comportam da mesma forma que na Web, exceto de duas maneiras:

  • Cookies de terceiros nunca serão bloqueados, mesmo em subframes, se a página de nível superior de uma determinada guia for uma página chrome-extension://.
  • As solicitações de uma extensão para um terceiro serão tratadas como do mesmo site se a extensão tiver permissões de host para o terceiro. Isso significa que SameSite=Strictcookies podem ser enviados. Isso se aplica apenas a solicitações de rede, não ao acesso por meio de document.cookie em JavaScript, e não se aplica se cookies de terceiros estiverem bloqueados.

As configurações relacionadas a cookies de terceiros são afetadas pelo funcionamento do Sandbox de privacidade e são ajustadas de acordo com o cronograma.

A API chrome.cookies fornece controle sobre a chave de partição a ser usada com cada método de API. Para mais informações, consulte a referência da API.