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, eles se comportam de maneira diferente em extensões.
Consulte browser.storage para informações sobre a API de extensão.
Armazenamento
Muitas vezes, é recomendável usar APIs de armazenamento da plataforma da Web em extensões. Esta seção explora o comportamento dessas APIs em um contexto de extensão, que às vezes pode ser diferente de como elas se comportam na Web.
Persistência
O armazenamento da extensão não é limpo quando um usuário limpa os dados de navegação. Isso se aplica a todos os dados armazenados usando APIs de armazenamento da Web, como armazenamento local 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 removido sob
forte 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. - Ligue para
navigator.storage.persist()para proteção contra despejo.
O armazenamento de extensão é compartilhado na origem da extensão, incluindo o service worker da extensão, 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 host em que o script de conteúdo é injetado, e não da extensão.
Acesso em service workers
As APIs IndexedDB e Cache Storage podem ser acessadas em service workers. No entanto, o armazenamento local e o armazenamento por sessão não são.
Se você precisar acessar o armazenamento local ou de sessão do service worker, use um documento offscreen.
Particionamento
O particionamento é onde as chaves são introduzidas para limitar o acesso aos dados armazenados. O armazenamento sempre foi indexado por origem.
A partir do Chrome 115, o particionamento de armazenamento introduz mudanças na forma como as chaves de particionamento são definidas para evitar determinados tipos de rastreamento entre sites. Na prática, isso significa que, se o site A incorporar um iframe que contém o site B, o site B não poderá acessar o mesmo armazenamento que teria normalmente se fosse acessado diretamente.
Para reduzir o impacto disso nas extensões, duas isenções se aplicam:
- 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 em que está incorporada, esse site também terá acesso à partição de nível superior.
Cookies
Os cookies oferecem uma maneira de armazenar pares de chave-valor associados a um domínio e caminho específicos. Eles têm valor limitado em extensões, mas entender o comportamento deles pode ser útil se você tiver um caso de uso específico ou tiver agrupado um script de terceiros que os usa na implementação.
Cookies seguros
O atributo de cookie Secure só é compatível com o esquema https://. Consequentemente, as páginas 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 cookie 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 em dois casos:
- Os cookies de terceiros nunca sã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 são tratadas como do mesmo site se a
extensão tiver permissões de host para o terceiro. Isso significa que os cookies
SameSite=Strictpodem ser enviados. Isso só se aplica a solicitações de rede, não ao acesso pordocument.cookieem JavaScript, e não se aplica se os cookies de terceiros estiverem bloqueados.
As configurações relacionadas a cookies de terceiros são afetadas pelo trabalho do Sandbox de privacidade e são ajustadas de acordo com o cronograma.
A API browser.cookies oferece 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.