2010-11-17 6 views
121

क्या एचटीएमएल 5 स्थानीय स्टोरेज ऑब्जेक्ट प्रति पेज/डोमेन अलग है? मैं सोच रहा हूं कि मैं स्थानीय स्टोरेज कुंजी का नाम कैसे दूंगा। क्या मुझे एक अलग उपसर्ग की आवश्यकता है? या क्या मैं उन्हें जो भी चाहूं नाम दे सकता हूं?एचटीएमएल 5 में, स्थानीय स्टोरेज ऑब्जेक्ट प्रति पेज/डोमेन अलग है?

+3

क्या डोमेन में पोर्ट नंबर शामिल है? –

उत्तर

135

यह प्रति डोमेन (same origin policy के समान पृथक्करण नियम) है, इसे प्रति पृष्ठ बनाने के लिए आपको location, या किसी अन्य दृष्टिकोण के आधार पर एक कुंजी का उपयोग करना होगा।

आप एक उपसर्ग की आवश्यकता नहीं है, यदि आपको इसकी आवश्यकता है तो इसका उपयोग करें। इसके अलावा, हाँ, आप जो भी चाहें उन्हें नाम दे सकते हैं।

+1

बिल्कुल मुझे क्या चाहिए। –

+34

यह प्रति अद्वितीय है 'प्रोटोकॉल: // होस्ट: पोर्ट' संयोजन। – Thasmo

+4

मैं यह पुष्टि करने के लिए यहां टिप्पणी कर रहा हूं कि यह जानना उपयोगी है कि पोर्ट स्कोपिंग में प्रासंगिक है। विचार करें: देव सर्वर, 'localhost'। –

8

हाँ, प्रत्येक डोमेन/सबडोमेन के पास स्थानीय स्टोरेज है और आप जो भी चाहें कुंजी को कॉल कर सकते हैं (उपसर्ग आवश्यक नहीं है)।

एक प्रमुख (इंडेक्स) आप विधि कुंजी का उपयोग कर सकते हैं प्राप्त करने के लिए इस तरह के रूप

localStorage.key(0); 

एक वस्तु globalStorage आप एक से अधिक localStorages हो सकता था जहां से पहले कहा जाता था, लेकिन यह चश्मा

से बहिष्कार किया गया है
5

मैं उपयोगकर्ता स्क्रिप्ट के साथ संभावित टकराव से बचने के लिए हमेशा एक उपसर्ग का उपयोग करता हूं - जो स्थानीय स्टोरेज का भी उपयोग कर सकता है।

+11

आईएमओ यह उपयोगकर्ता स्क्रिप्ट है जो पृष्ठों से नहीं, टकराव से बचना चाहिए। मेरी उपयोगकर्ता स्क्रिप्ट में मैं स्क्रिप्ट के नाम पर एक उपसर्ग का उपयोग कर रहा हूं। –

0

यह उस डोमेन पर कहीं भी उपलब्ध है जैसा निक ने सुझाव दिया है, एक विकल्प के रूप में सत्रस्टोर थोड़ा अलग तरीके से काम करता है, यह ब्राउज़र विंडो के लिए अलग है। यही कहना है कि उसी डोमेन पर अन्य टैब या विंडो को स्टोरेज ऑब्जेक्ट की उसी प्रति तक पहुंच नहीं है।

9

भंडार मूल, जहां मूल Same Origin Policy (एक स्कीमा [http बनाम https, आदि], बंदरगाह, और मेजबान के संयोजन) के लिए के रूप में ही है प्रति कर रहे हैं। the spec से:

प्रत्येक शीर्ष-स्तरीय ब्राउज़िंग संदर्भ में प्रत्येक सत्र के लिए सत्र भंडारण क्षेत्रों का एक अनूठा सेट होता है।

इस प्रकार, http://a.example.com के लिए भंडारण और http://b.example.com के लिए भंडारण अलग (और वे दोनों http://stackoverflow.com से अलग कर रहे हैं) उन सभी अलग मेजबान के रूप में कर रहे हैं। इसी तरह, http://example.com:80 और http://example.com:8080 और https://example.com सभी अलग-अलग मूल हैं।

वेब स्टोरेज में कोई तंत्र नहीं बनाया गया है जो एक मूल को दूसरे के संग्रहण तक पहुंचने की अनुमति देता है।

ध्यान दें कि यह मूल, नहीं यूआरएल है, तो http://example.com/page1 और http://example.com/page2 दोनों http://example.com के लिए भंडारण की पहुंच है।

3

के रूप में अन्य लोगों ने बताया है, localStorage प्रोटोकॉल, होस्ट & बंदरगाह प्रति अद्वितीय है। यदि आप प्रीफ़िक्स्ड कुंजी के साथ अपने स्टोरेज को नियंत्रित करने के लिए एक आसान तरीका चाहते हैं, तो मैं localDataStorage का सुझाव देता हूं।

यह न केवल एक ही डोमेन के हिस्सों में बंटा हुआ साझा भंडारण क्रियान्वयन पर बल देते है कुंजी लगाकर द्वारा, यह भी पारदर्शी रूप से दुकानों जावास्क्रिप्ट डेटा प्रकार (सरणी, बूलियन, तिथि, फ्लोट, पूर्णांक, स्ट्रिंग और वस्तु), हल्के डेटा कहानियो को प्रदान करता है, स्वचालित रूप से स्ट्रिंग को संपीड़ित करता है, और कुंजी (नाम) के साथ-साथ क्वेरी (कुंजी) मान द्वारा क्वेरी की सुविधा देता है।

[अस्वीकरण] [/ अस्वीकरण] मैं उपयोगिता के लेखक हूँ

उदाहरण:

// 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 

आप देख सकते हैं, आदिम मान सम्मान किया जाता है, और आप को नियंत्रित करने के कई उदाहरण बना सकते हैं अपने भंडारण।

संबंधित मुद्दे