Apakah objek localStorage HTML5 diisolasi per halaman / domain? Saya bertanya-tanya karena bagaimana saya memberi nama kunci Penyimpanan lokal. Apakah saya memerlukan awalan terpisah? Atau bisakah saya beri nama apa pun yang saya inginkan?
javascript
html
local-storage
Nathan Moos
sumber
sumber
Jawaban:
Ini per domain dan port (aturan pemisahan yang sama dengan kebijakan asal yang sama ), untuk membuatnya per halaman Anda harus menggunakan kunci berdasarkan
location
, atau beberapa pendekatan lain.Anda tidak perlu awalan, gunakan satu jika Anda membutuhkannya. Juga, ya, Anda dapat memberi nama mereka apa pun yang Anda inginkan.
sumber
protocol://host:port
kombinasi.Toko-toko adalah per asal , di mana "asal" sama dengan Kebijakan Same Origin (kombinasi skema [
http
vs.https
, dll], port, dan host). Dari spec :Jadi, penyimpanan untuk
http://a.example.com
dan penyimpananhttp://b.example.com
terpisah (dan keduanya terpisahhttp://example.com
) karena semuanya adalah host yang berbeda. Demikian pula,http://example.com:80
danhttp://example.com:8080
danhttps://example.com
semuanya berasal berbeda.Tidak ada mekanisme yang dibangun dalam penyimpanan web yang memungkinkan satu asal mengakses penyimpanan yang lain.
Perhatikan bahwa itu asalnya , bukan URL, sehingga
http://example.com/page1
danhttp://example.com/page2
keduanya memiliki akses ke penyimpanan untukhttp://example.com
.sumber
Ya, setiap domain / subdomain memiliki localStorage yang berbeda dan Anda dapat memanggil tombol apa pun yang Anda inginkan (awalan tidak diperlukan).
Untuk mendapatkan kunci, Anda dapat menggunakan kunci metode (indeks) seperti
Ada objek yang disebut globalStorage sebelum di mana Anda bisa memiliki beberapa localStorage, tapi sudah tidak digunakan lagi dari spesifikasi
sumber
Seperti yang telah ditunjukkan orang lain, localStorage unik untuk setiap protokol, host & port. Jika Anda ingin cara praktis untuk mengontrol penyimpanan Anda dengan kunci awalan, saya sarankan localDataStorage .
Tidak hanya membantu menegakkan penyimpanan bersama yang disegmentasi dalam domain yang sama dengan awalan kunci, itu juga secara transparan menyimpan tipe data javascript (Array, Boolean, Date, Float, Integer, String dan Object), menyediakan kebingungan data ringan, secara otomatis mengompresi string, dan memfasilitasi permintaan dengan kunci (nama) serta permintaan dengan nilai (kunci).
[DISCLAIMER] Saya adalah penulis utilitas [/ DISCLAIMER]
Contoh:
Seperti yang Anda lihat, nilai-nilai primitif dihormati, dan Anda dapat membuat beberapa instance untuk mengontrol penyimpanan Anda.
sumber
Ini tersedia di mana saja di domain itu seperti yang disarankan Nick, sebagai alternatif ada sessionStorage bekerja sedikit berbeda karena berbeda dengan jendela browser itu sendiri. Artinya, tab atau jendela lain di domain yang sama tidak memiliki akses ke salinan yang sama dari objek penyimpanan.
sumber