Escopo de sessionStorage e localStorage

105

Eu li alguma documentação sobre sessionStorage e localStorage, mas não entendo qual é o escopo: o domínio, uma página específica?

Por exemplo, se eu tiver as seguintes páginas:

http://example.com/products.aspx?productID=1

http://example.com/products.aspx?productID=2

http://example.com/services.aspx?serviceID=3

E se eu executar em cada uma das páginas acima (com idvalue sendo o valor na string de consulta):

localStorage.setItem('ID',idvalue);

Vou acabar com 3 valores diferentes armazenados ou os valores vão se sobrescrever?

Christophe
fonte

Respostas:

87

Os valores irão se sobrescrever. Cada par de nome de chave é exclusivo para um protocolo e domínio, independentemente dos caminhos.

O domínio afetado pode ser alterado por meio da document.domainpropriedade.

  • sub.example.com-> example.comé possível (subdomínio)
  • sub.example.com-> other.example.comnão é possível
Rob W
fonte
Obrigado! Você teria uma referência para recomendar, que explica localStorage em detalhes?
Christophe
1
bem, mesmo depois de ler a página MDN ainda não consigo encontrar a resposta para minha pergunta ... De qualquer forma, obrigado novamente!
Christophe
1
@Christophe Eu verifiquei minhas declarações um tempo atrás, visualizando o banco de dados sqlite (3) chamado webappsstore.sqliteem meu diretório de perfil do Firefox, usando query SELECT scope FROM webappsstore2;. O resultado é o inverso do domio, seguido pelo protocolo de não-invertida, e suficiente com a porta, por exemplo: gro.allizom.snodda.secivres.:https:443. Como você pode ver, não há menção a nenhum caminho.
Rob W
Aqui está a documentação da document.domainAPI mencionada: html.spec.whatwg.org/multipage/…
mltsy de
149

Armazenamento de sessão:

  1. Os valores persistem apenas enquanto durar a janela ou guia na qual foram armazenados.

  2. Os valores são visíveis apenas na janela ou guia que os criou.

Armazenamento local:

  1. Os valores persistem em janelas e tempos de vida do navegador.

  2. Os valores são compartilhados em todas as janelas ou guias em execução na mesma origem.

Portanto, ao ler e compreender isso, cada par de valores-chave é exclusivo para cada domínio, porque o armazenamento local persiste os valores na janela ou guia.

Talha
fonte
3
Obrigado. Você poderia compartilhar o link para esta referência?
Christophe de
3
O link acima está extinto. Este é outro grande recurso: sitepoint.com/an-overview-of-the-web-storage-api
chrisjlee
A conclusão pode ser correta, mas não o raciocínio. Mesmo se o armazenamento fosse por página, ele ainda poderia persistir nas janelas / guias.
pirocracia de