Đối tượng HTML5 localStorage có được phân tách trên mỗi trang/tên miền không? Tôi tự hỏi vì làm thế nào tôi sẽ đặt tên các khóa localStorage. Tôi có cần tiền tố riêng không? Hoặc tôi có thể đặt tên cho họ bất cứ điều gì tôi muốn?Trong HTML5, đối tượng localStorage có được phân tách trên mỗi trang/tên miền không?
Trả lời
Mỗi tên miền (cùng một quy tắc phân tách là same origin policy), để làm cho mỗi trang bạn phải sử dụng khóa dựa trên số location
hoặc một số cách tiếp cận khác.
Bạn không cần cần tiền tố, hãy sử dụng một tiền tố nếu bạn cần. Ngoài ra, có, bạn có thể đặt tên cho họ bất cứ điều gì bạn muốn.
chính xác những gì tôi cần. –
Nó là duy nhất cho mỗi kết hợp 'giao thức: // host: port'. – Thasmo
Tôi đang bình luận ở đây để xác nhận rằng nó rất hữu ích khi biết rằng cổng có liên quan trong phạm vi. Hãy xem xét: dev server, 'localhost'. –
Vâng, mỗi tên miền/tên miền phụ có một khác nhau localStorage và bạn có thể gọi các phím bất cứ điều gì bạn muốn (tiền tố là không bắt buộc).
Để có được một chìa khóa bạn có thể sử dụng phím phương pháp (index) như
localStorage.key(0);
Có một đối tượng gọi globalStorage trước, nơi bạn có thể có nhiều localStorages, nhưng nó đã bị phản đối từ các thông số kỹ thuật
Tôi luôn sử dụng tiền tố, chỉ để tránh xung đột tiềm năng với tập lệnh người dùng - điều này cũng có thể sử dụng localStorage.
IMO Đó là tập lệnh người dùng nên tránh va chạm, chứ không phải các trang. Trong kịch bản người dùng của tôi, tôi đang sử dụng một tiền tố được đặt tên theo kịch bản lệnh. –
Nó có sẵn ở bất kỳ nơi nào trên miền đó như được Nick đề xuất, thay vào đó, sessionStorage hoạt động hơi khác ở chỗ nó khác với cửa sổ trình duyệt. Điều đó có nghĩa là các tab hoặc cửa sổ khác trên cùng một miền không có quyền truy cập vào cùng một bản sao của đối tượng lưu trữ đó.
Các cửa hàng đang mỗi gốc, nơi nguồn gốc cũng giống như đối với Same Origin Policy (một sự kết hợp của schema [http
vs https
, vv], cảng, và host). Từ the spec:
Mỗi ngữ cảnh duyệt cấp cao nhất có một nhóm vùng lưu trữ phiên duy nhất, mỗi vùng một nguồn gốc.
Như vậy, lưu trữ cho http://a.example.com
và lưu trữ cho http://b.example.com
riêng biệt (và chúng đều tách biệt với http://stackoverflow.com
) như những người được tất cả các host khác nhau. Tương tự, http://example.com:80
và http://example.com:8080
và https://example.com
là tất cả các nguồn gốc khác nhau.
Không có cơ chế nào được tích hợp vào bộ nhớ web cho phép một nguồn gốc truy cập bộ nhớ của người khác.
Lưu ý rằng nó có nguồn gốc , không URL, vì vậy http://example.com/page1
và http://example.com/page2
cả hai đều có quyền truy cập vào các lưu trữ cho http://example.com
.
Như những người khác đã chỉ ra, localStorage là duy nhất cho mỗi giao thức, lưu trữ cổng &. Nếu bạn muốn có một cách tiện dụng để kiểm soát bộ nhớ của mình bằng các phím được đặt trước, tôi đề xuất localDataStorage.
Nó không chỉ giúp thực thi lưu trữ được chia sẻ trong cùng một tên miền bằng cách thêm tiền tố, nó còn lưu trữ rõ ràng các loại dữ liệu javascript (Mảng, Boolean, Date, Float, Integer, String và Object), cung cấp dữ liệu gọn gàng, tự động nén chuỗi và tạo điều kiện truy vấn bằng khóa (tên) cũng như truy vấn theo giá trị (khóa).
[SỰ TỪ BỎ] Tôi là tác giả của các tiện ích [/ SỰ TỪ BỎ]
Ví dụ:
// 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
Như bạn có thể thấy, giá trị nguyên thủy được tôn trọng, và bạn có thể tạo một số trường hợp để kiểm soát của bạn lưu trữ.
- 1. đối tượng localStorage không được xác định trong IE
- 2. HTML5 localstorage trong Cordova
- 3. Javascript + HTML5 localstorage
- 4. HTML5 localStorage & SQL
- 5. Đối tượng được phân bổ trên heap
- 6. HTML5 localStorage (XML/JSON dữ liệu)
- 7. HTML5 Xóa đối tượng được vẽ trước đó trong canvas
- 8. Tách trong canvas HTML5?
- 9. Tách đối tượng trong EF4 - mất đồ thị đối tượng
- 10. Tách mảng đối tượng thành mảng mới dựa trên năm của ngày của đối tượng
- 11. Lập mô hình miền, Đối tượng miền trong DDD
- 12. Tham gia tập hợp các đối tượng thành chuỗi được phân tách bằng dấu phẩy
- 13. đối tượng thanh toán bù trừ từ localStorage
- 14. LocalStorage có thể được khách hàng sửa đổi không?
- 15. HTML5 localStorage nhận khóa từ giá trị
- 16. Đối tượng tên miền trong Views
- 17. Caching đối tượng miền trong Grails
- 18. HTML5 localStorage cho tài sản (stylesheets, JavaScript, hình ảnh, vv)
- 19. Đối tượng mô hình miền có đang chuyển giữa các lớp trên không?
- 20. Giá trị được phân tách bằng dấu phẩy: từ chuỗi thành đối tượng đến danh sách
- 21. "Nói, Do not Ask" trên nhiều miền đối tượng
- 22. Xác định đối tượng nào trên màn hình được nhấp trong html5 canvas javascript?
- 23. Đối tượng miền - "Đối tượng thông minh" so với POCO
- 24. Vẽ mũi tên trên Canvas HTML5 giữa hai đối tượng
- 25. Bạn có thể lưu trữ id phiên trong localStorage không?
- 26. Phân tách các lớp miền từ Lớp mô hình Django
- 27. Hỗ trợ thẻ âm thanh HTML5 có phân phát mp3 từ một tên miền khác không?
- 28. Làm cách nào để localStorage trong HTML5 hoạt động?
- 29. Giới hạn LocalStorage trên PhoneGap
- 30. Tôi có thể phân tách luồng không?
Tên miền có bao gồm số cổng không? –