O objeto localStorage do HTML5 é isolado por página / domínio? Eu estou querendo saber por causa de como eu nomearia chaves localStorage. Preciso de um prefixo separado? Ou posso nomeá-los como quiser?
javascript
html
local-storage
Nathan Moos
fonte
fonte
Respostas:
É por domínio e porta (as mesmas regras de segregação da mesma política de origem ). Para torná-lo por página, você precisará usar uma chave com base na
location
, ou em alguma outra abordagem.Você não precisa de um prefixo, use um se precisar. Além disso, sim, você pode nomeá-los como quiser.
fonte
protocol://host:port
combinação.As lojas são por origem , onde "origem" é igual à Política de mesma origem (uma combinação de esquema [
http
vs.https
, etc.], porta e host). Das especificações :Portanto, o armazenamento para
http://a.example.com
e o armazenamento parahttp://b.example.com
são separados (e ambos são separadoshttp://example.com
), pois todos são hosts diferentes. Da mesma forma,http://example.com:80
ehttp://example.com:8080
ehttps://example.com
são todas as origens diferentes.Não há mecanismo incorporado ao armazenamento na Web que permita que uma origem acesse o armazenamento de outra.
Observe que é de origem , não URL, portanto,
http://example.com/page1
ehttp://example.com/page2
ambos têm acesso ao armazenamento parahttp://example.com
.fonte
Sim, cada domínio / subdomínio possui um localStorage diferente e você pode chamar as chaves como desejar (o prefixo não é necessário).
Para obter uma chave, você pode usar a chave do método (índice), como
Havia um objeto chamado globalStorage antes em que você poderia ter vários localStorages, mas foi preterido das especificações
fonte
Como outros já apontaram, o localStorage é único por protocolo, host e porta. Se você quiser uma maneira prática de controlar seu armazenamento com chaves prefixadas, sugiro localDataStorage .
Além de ajudar a impor o armazenamento compartilhado segmentado no mesmo domínio, prefixando chaves, ele também armazena de forma transparente os tipos de dados javascript (Matriz, Booleano, Data, Flutuação, Inteiro, String e Objeto), fornece ofuscação leve de dados, compacta automaticamente as strings e facilita a consulta por chave (nome), bem como a consulta por valor (chave).
[AVISO LEGAL] Eu sou o autor do utilitário [/ AVISO LEGAL]
Exemplos:
Como você pode ver, os valores primitivos são respeitados e você pode criar várias instâncias para controlar seu armazenamento.
fonte
Está disponível em qualquer lugar desse domínio, como sugeriu Nick, como alternativa, o sessionStorage funciona de maneira um pouco diferente, pois é distinto da própria janela do navegador. Ou seja, outras guias ou janelas no mesmo domínio não têm acesso à mesma cópia do objeto de armazenamento.
fonte