Pergunta

O objeto LocalStorage HTML5 é isolado por página/domínio? Estou me perguntando por causa de como nomearia as teclas LocalStorage. Eu preciso de um prefixo separado? Ou posso nomeá -los o que eu quiser?

Foi útil?

Solução

É por domínio (as mesmas regras de segregação que o Mesma política de origem), para torná-lo por página, você teria que usar uma chave com base no location, ou alguma outra abordagem.

Você não precisar Um prefixo, use um, se precisar. Além disso, sim, você pode nomeá -los o que quiser.

Outras dicas

As lojas são por origem, onde a origem é a mesma que para o Mesma política de origem (Uma combinação de esquema [http vs. https, etc.], porta e host). A partir de a especificação:

Cada contexto de navegação no nível superior possui um conjunto exclusivo de áreas de armazenamento de sessão, uma para cada origem.

Assim, o armazenamento para http://a.example.com e o armazenamento para http://b.example.com são separados (e ambos são separados de http://stackoverflow.com) como esses são todos hosts diferentes. De forma similar, http://example.com:80 e http://example.com:8080 e https://example.com são todas as origens diferentes.

Não há mecanismo embutido no armazenamento da Web que permita que uma origem acesse o armazenamento de outro.

Observe que é origem, não url, então http://example.com/page1 e http://example.com/page2 ambos têm acesso ao armazenamento para http://example.com.

Sim, cada domínio/subdomínio tem um diferente LocalStorage E você pode chamar as chaves o que quiser (o prefixo não é necessário).

Para obter uma chave, você pode usar a chave do método (índice) como

localStorage.key(0);

Havia um objeto chamado GlobalStorage Antes de onde você poderia ter vários artistas, mas isso foi obsoleto das especificações

Eu sempre usaria um prefixo, apenas para evitar colisões em potencial com scripts de usuário - que também podem usar o LocalStorage.

Como outros apontaram, o LocalStorage é único por protocolo, host e porta. Se você quer uma maneira útil de controlar seu armazenamento com teclas prefixadas, sugiro LocalDataStotorage.

Não apenas ajuda a aplicar o armazenamento compartilhado segmentado dentro do mesmo domínio, prefixando as chaves, mas também armazena transparentemente tipos de dados de JavaScript (matriz, booleano, data, flutuação, número inteiro, string e objeto), fornece ofuscação leve de dados, compressa automaticamente seqüências e as seqüências e as forças e Facilita a consulta por key (nome), bem como o valor de (key).

Isenção de isenção] Eu sou o autor do utilitário [/isenção de responsabilidade

Exemplos:

// instantiate our first storage object
// internally, all keys will use the specified prefix, i.e. passphrase.life
var localData = localDataStorage( 'passphrase.life' );

localData.set( 'key1', 'Belgian' )
localData.set( 'key2', 1200.0047 )
localData.set( 'key3', true )
localData.set( 'key4', { 'RSK' : [1,'3',5,'7',9] } )
localData.set( 'key5', null )

localData.get( 'key1' )   -->   'Belgian'
localData.get( 'key2' )   -->   1200.0047
localData.get( 'key3' )   -->   true
localData.get( 'key4' )   -->   Object {RSK: Array(5)}
localData.get( 'key5' )   -->   null


// instantiate our second storage object
// internally, all keys will use the specified prefix, i.e. prismcipher.com
var localData2 = localDataStorage( 'prismcipher.com' );

localData2.set( 'key1', 123456789 )  // integer

localData2.get( 'key1' )   -->   123456789

Como você pode ver, os valores primitivos são respeitados e você pode criar várias instâncias para controlar seu armazenamento.

Ele está disponível em qualquer lugar desse domínio, como Nick sugeriu, como alternativa, existe o SessionStorage funciona de maneira um pouco diferente, pois é distinto da 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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top