HTML5 localStorage 객체가 페이지 / 도메인마다 분리되어 있습니까? localStorage 키의 이름을 지정하는 방법이 궁금합니다. 별도의 접두사가 필요합니까? 아니면 내가 원하는대로 이름을 지정할 수 있습니까?
HTML5 localStorage 객체가 페이지 / 도메인마다 분리되어 있습니까? localStorage 키의 이름을 지정하는 방법이 궁금합니다. 별도의 접두사가 필요합니까? 아니면 내가 원하는대로 이름을 지정할 수 있습니까?
답변:
도메인 및 포트 ( 동일한 원본 정책과 동일한 분리 규칙 )에 따라 페이지별로 location
또는 다른 접근 방식을 기반으로 키를 사용해야합니다 .
접두사 가 필요 하지 않지만 필요한 경우 접두사를 사용하십시오. 또한 예, 원하는 이름을 지정할 수 있습니다.
protocol://host:port
조합 마다 고유 합니다.
상점은 원점별로 있으며 "원점"은 동일한 원점 정책 (스키마 [ http
vs. https
등], 포트 및 호스트의 조합)과 동일합니다. 에서 사양 :
각 최상위 찾아보기 컨텍스트에는 고유 한 세션 저장 영역 세트가 있으며 각 출처마다 하나씩 있습니다.
따라서 스토리지 http://a.example.com
와 스토리지 는 모두 서로 다른 호스트 http://b.example.com
이므로 별도 (및 둘 다 별도 http://example.com
)입니다. 마찬가지로, http://example.com:80
과 http://example.com:8080
및 https://example.com
모든 다른 기원이다.
한 저장소에서 다른 저장소에 액세스 할 수 있도록하는 웹 저장소에는 메커니즘이 없습니다.
그것의주의 의 기원 이 아닌 URL, 그래서 http://example.com/page1
와 http://example.com/page2
의 저장에 액세스 할 수 모두 http://example.com
.
다른 사람들이 지적했듯이 localStorage는 프로토콜, 호스트 및 포트마다 고유합니다. 접두사가 붙은 키로 스토리지를 제어하는 편리한 방법을 원한다면 localDataStorage를 제안 합니다 .
키를 접두사로 사용하여 동일한 도메인 내에서 세그먼트 공유 스토리지를 시행 할 수있을뿐만 아니라, 자바 스크립트 데이터 유형 (Array, Boolean, Date, Float, Integer, String 및 Object)을 투명하게 저장하고, 가벼운 데이터 난독 화를 제공하고, 문자열을 자동으로 압축하고, 키별 (이름) 별 쿼리와 (키별) 값별 쿼리를 용이하게합니다.
[DISCLAIMER] 본인은 [/ DISCLAIMER] 유틸리티의 저자입니다.
예 :
// 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
보시다시피, 기본 값이 존중되며 여러 인스턴스를 만들어 스토리지를 제어 할 수 있습니다.