O Chrome 115 introduziu mudanças nas APIs de armazenamento, workers de serviço e comunicação particionando em contextos de terceiros. Além de serem isoladas pela política de mesma origem, as APIs afetadas usadas em contextos de terceiros também são isoladas pelo site do contexto de nível superior.
Os sites que não tiveram tempo para implementar o suporte ao particionamento de armazenamento de terceiros podem participar de um teste de descontinuação para remover a partição temporariamente (continuar o isolamento com a mesma política de origem, mas remover o isolamento por site de nível superior) e restaurar o comportamento anterior de armazenamento, workers de serviço e APIs de comunicação no conteúdo incorporado. Esse teste de descontinuação está programado para expirar com o lançamento do Chrome 127 em 3 de setembro de 2024. Esse teste é separado do teste de descontinuação para acesso a cookies de terceiros: ele é apenas para acesso ao armazenamento.
Como uma solução de longo prazo para resolver determinados casos de uso interrompidos pela partição de armazenamento sem cookies de terceiros, o Chrome está propondo a capacidade de terceiros solicitarem acesso de armazenamento/comunicação (cookies e não cookies) pela API Storage Access (envio a partir do Chrome 117), que já permite que terceiros solicitem acesso a cookies.
A partir do Chrome 120, essa proposta vai estar disponível para experimentação em um teste de origem. Os desenvolvedores precisam participar desse teste de origem para avaliar como a solução proposta atende aos casos de uso e garantir que estejam preparados antes do fim do teste de descontinuação.
Detalhes do teste de origem
A partir do Chrome 120, o Chrome vai oferecer suporte a um teste de origem, StorageAccessAPIBeyondCookies, para permitir a extensão proposta da API Storage Access (compatível com versões anteriores) para permitir o acesso ao armazenamento não particionado (cookie e não cookie) em um contexto de terceiros.
Mecânica
A API pode ser usada da seguinte forma (JavaScript em execução em um iframe incorporado):
// Request a new storage handle via rSA (this should prompt the user)
const handle = await document.requestStorageAccess({all: true});
// Write some 1P context sessionStorage
handle.sessionStorage.setItem('userid', '1234');
// Write some 1P context localStorage
handle.localStorage.setItem('preference', 'A');
// Open or create an indexedDB that is shared with the 1P context
const messageDB = handle.indexedDB.open('messages');
// Use locks shared with the 1P context
await handle.locks.request('example', ...);
Se você quiser apenas o acesso a uma API específica em vez de all
, transmita apenas os nomes dos identificadores de API necessários. Por exemplo, é possível transmitir {sessionStorage: true}
para ter acesso apenas ao armazenamento de sessão ou {indexedDB: true, locks:true}
para ter acesso ao IndexedDB e aos bloqueios da Web.
Além de chamar essa extensão extra, o acesso ao armazenamento sem cookies corresponde aos requisitos atuais de acesso a cookies pela API Storage Access. Por exemplo, no Chrome, nenhum aviso é mostrado quando as origens estão no mesmo conjunto de sites relacionados (RWS, o novo nome para os conjuntos próprios). As origens que não fazem parte do mesmo RWS estão sujeitas aos requisitos de solicitação da API Storage Access no Chrome.
Duração
O teste de origem vai estar disponível do Chrome 120 até o Chrome 125 (ou após 6 de agosto de 2024 em qualquer marco).
Escopo
Apenas o armazenamento DOM (armazenamento local e de sessão), o DB indexado e as fechaduras da Web estão disponíveis no Chrome 120.
O armazenamento em cache, o sistema de arquivos particular de origem, a cota, o armazenamento de blobs e o canal de transmissão foram adicionados no Chrome 121.
Shared Workers e controle sobre a inclusão de cookies foram adicionados no Chrome 123.
Os workers dedicados herdam o acesso a cookies não particionados se requestStorageAccess
foi chamado antes da criação do worker no Chrome 120. Isso não exige o uso do identificador da API Storage Access.
Participar
- Avalie como você usa o armazenamento de cookies e sem cookies em um contexto de terceiros. Os exemplos de casos de uso podem ajudar a entender se essa proposta atende às suas necessidades.
- Inicie o Chrome versão 120 (ou mais recente) e verifique se a flag test-third-party-cookie-phaseout está ativada.
- Se você quiser testar o recurso localmente sem configurar um token de teste de origem, ative #enable-experimental-web-platform-features no navegador.
- Depois de concluir os testes locais, registre-se para o teste de origem da StorageAccessAPIBeyondCookies e receba um token para seus domínios. Para instruções mais detalhadas, acesse Começar a usar os testes de origem. O guia de solução de problemas de testes de origem do Chrome oferece uma lista de verificação completa para garantir que o token esteja configurado corretamente.
- Incorpore esse token de teste de origem no iframe em que você precisa usar o identificador da API Storage Access usando um cabeçalho HTTP, uma metatag HTML ou programaticamente. O token precisa ser incorporado por qualquer frame que queira usar essa API. Incorporá-lo no frame pai não ativará a API em frames filhos.
- Chame
document.requestStorageAccess(...)
para acessar o identificador da API Storage Access no iframe entre sites. Consulte a documentação da API Storage Access para conferir os requisitos para que essa chamada seja bem-sucedida. - Migre o armazenamento relacionado no seu iframe para usar o identificador da API Storage Access, se disponível. Por exemplo, as chamadas para
window.sessionStorage.setItem(...)
se tornamhandle.sessionStorage.setItem(...)
. - Abra seu site e verifique se o identificador de acesso ao armazenamento está funcionando conforme o esperado.
- Para sair do teste de origem, remova o token adicionado na etapa 3.
- Envie feedback ou relate problemas no repositório do GitHub da API Storage Access sem cookies.
Demonstração: como usar a API Storage Access para acessar o armazenamento local não particionado
A demonstração a seguir mostra como acessar canais de transmissão não particionados de um iframe de terceiros usando a API Storage Access:
https://saa-beyond-cookies.glitch.me/
A demonstração requer o Chrome 121 ou mais recente com a flag test-third-party-cookie-phaseout ativada.