HTML5 localStorageオブジェクトはページ/ドメインごとに分離されていますか?localStorageキーに名前を付ける方法に疑問があるのですが。別のプレフィックスが必要ですか?または、好きな名前を付けられますか?
HTML5 localStorageオブジェクトはページ/ドメインごとに分離されていますか?localStorageキーに名前を付ける方法に疑問があるのですが。別のプレフィックスが必要ですか?または、好きな名前を付けられますか?
回答:
それはドメインとポートごとにあります(と同じ分離ルール 同じ発信元ポリシー)ごとであり、ページごとにするにはlocation
、に基づいたキーを使用する必要があります。
プレフィックスは必要ありませんが、必要に応じて使用してください。また、はい、好きな名前を付けることができます。
protocol://host:port
組み合わせごとにユニークです。
ストアはoriginごとにあり、「origin」はSame Origin Policyと同じです(スキーマ(http
vs https
など)、ポート、およびホストの組み合わせ)。スペックから:
各トップレベルのブラウジングコンテキストには、各起点に1つずつ、一連の一意のセッションストレージ領域があります。
したがって、のストレージhttp://a.example.com
とのストレージhttp://b.example.com
は別々です(両方ともから別々ですhttp://example.com
)。これらはすべて異なるホストであるためです。同様にhttp://example.com:80
、http://example.com:8080
そしてhttps://example.com
はすべて異なる起源です。
あるオリジンが別のオリジンのストレージにアクセスできるようにするメカニズムがWebストレージに組み込まれていません。
これはURLではなくオリジンでありhttp://example.com/page1
、http://example.com/page2
両方とものストレージにアクセスできることに注意してくださいhttp://example.com
。
他の人が指摘したように、localStorageはプロトコル、ホスト、ポートごとに一意です。接頭辞付きのキーでストレージを制御する便利な方法が必要な場合は、localDataStorageをお勧めします。
プレフィックスキーによって同じドメイン内のセグメント化された共有ストレージを強制するのに役立つだけでなく、JavaScriptデータ型(配列、ブール、日付、フロート、整数、文字列、オブジェクト)を透過的に保存し、軽量なデータ難読化を提供し、文字列を自動的に圧縮します。キー(名前)によるクエリと(キー)値によるクエリを容易にします。
[免責事項]私はユーティリティの作成者です[/免責事項]
例:
// 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
ご覧のように、プリミティブ値が尊重され、ストレージを制御するためにいくつかのインスタンスを作成できます。