स्टोरेज और कुकी

एक्सटेंशन, किसी सामान्य वेबसाइट की तरह ही, कुकी को स्टोर कर सकते हैं और वेब स्टोरेज एपीआई को ऐक्सेस कर सकते हैं. हालांकि, कुछ मामलों में ये एक्सटेंशन में अलग तरह से काम करते हैं.

एक्सटेंशन एपीआई के बारे में जानकारी के लिए, chrome.storage पर जाएं.

डिवाइस का स्टोरेज

एक्सटेंशन में वेब प्लैटफ़ॉर्म स्टोरेज एपीआई का इस्तेमाल करना अक्सर ज़रूरी होता है. इस सेक्शन में, एक्सटेंशन के संदर्भ में इन एपीआई के काम करने के तरीके के बारे में जानकारी दी गई है. हालांकि, वेब पर इन एपीआई के काम करने के तरीके में कभी-कभी अंतर हो सकता है.

स्थायी

जब कोई उपयोगकर्ता ब्राउज़िंग डेटा को साफ़ करता है, तो एक्सटेंशन स्टोरेज नहीं मिटता. यह वेब स्टोरेज एपीआई (जैसे, Local Storage और IndexedDB) का इस्तेमाल करके सेव किए गए सभी डेटा पर लागू होता है.

एक्सटेंशन, स्टोरेज के इस्तेमाल पर लागू होने वाली सामान्य पाबंदियों के दायरे में आते हैं. इनकी जांच navigator.storage.estimate() पर कॉल करके की जा सकती है. ज़्यादा मेमोरी के दबाव में भी मेमोरी को खाली किया जा सकता है, हालांकि ऐसा कम ही होता है. इससे बचने के लिए:

  • "unlimitedStorage" अनुमति के लिए अनुरोध करें. इससे एक्सटेंशन और वेब स्टोरेज एपीआई, दोनों पर असर पड़ता है. साथ ही, इससे एक्सटेंशन को कोटा से जुड़ी पाबंदियों और उसे हटाने, दोनों में छूट मिलती है.
  • घर से बाहर निकाले जाने से बचाने के लिए navigator.storage.persist() को कॉल करें.

एक्सटेंशन स्टोरेज को एक्सटेंशन के ऑरिजिन में शेयर किया जाता है. इसमें एक्सटेंशन सर्विस वर्कर, कोई भी एक्सटेंशन पेज (पॉप-अप और साइड पैनल सहित), और ऑफ़स्क्रीन दस्तावेज़ शामिल हैं. कॉन्टेंट स्क्रिप्ट में, वेब स्टोरेज एपीआई को कॉल करने से, होस्ट पेज से उस डेटा को ऐक्सेस किया जाता है जिस पर कॉन्टेंट स्क्रिप्ट इंजेक्ट की जाती है, न कि एक्सटेंशन पर.

सर्विस वर्कर में ऐक्सेस

सेवा कर्मचारियों में IndexedDB और कैश मेमोरी एपीआई को ऐक्सेस किया जा सकता है. हालांकि, लोकल स्टोरेज और सेशन स्टोरेज उपलब्ध नहीं हैं.

अगर आपको सर्विस वर्कर से Local Storage या Session Storage ऐक्सेस करना है, तो ऑफ़स्क्रीन दस्तावेज़ का इस्तेमाल करें.

विभाजन

बंटवारे की प्रक्रिया में, सेव किए गए डेटा के लिए कुंजियां लॉन्च की जाती हैं, ताकि डेटा को ऐक्सेस करने की जगह सीमित की जा सके. स्टोरेज को हमेशा से शुरुआत के आधार पर रखा जाता रहा है.

Chrome 115 और उसके बाद के वर्शन में, स्टोरेज के पार्टीशन की सुविधा में कुछ खास तरह की क्रॉस-साइट ट्रैकिंग को रोकने के लिए, पार्टिशनिंग कुंजियों को तय करने के तरीके में बदलाव किए गए हैं. इसका मतलब है कि अगर साइट A, साइट B वाला कोई iframe एम्बेड करती है, तो साइट B उस स्टोरेज को ऐक्सेस नहीं कर पाएगी जो आम तौर पर, सीधे नेविगेट करने पर मिलता है.

एक्सटेंशन में इसके असर को कम करने के लिए, दो छूट लागू होती हैं:

  • अगर chrome-extension:// स्कीम वाले पेज को किसी भी साइट में एम्बेड किया गया है, तो स्टोरेज के पार्टीशन लागू नहीं होंगे. साथ ही, एक्सटेंशन के पास टॉप लेवल पार्टीशन का ऐक्सेस होगा.
  • अगर chrome-extension:// स्कीम वाले किसी पेज में iframe शामिल है और एक्सटेंशन के पास उस साइट के लिए होस्ट की अनुमतियां हैं जिसे वह एम्बेड कर रहा है, तो उस साइट के पास अपने टॉप लेवल पार्टीशन का भी ऐक्सेस होगा.

कुकी

कुकी की मदद से, किसी खास डोमेन और पाथ से जुड़े की-वैल्यू पेयर को स्टोर किया जा सकता है. एक्सटेंशन की खासियत नहीं होती, लेकिन उनके व्यवहार को समझना आपके लिए तब फ़ायदेमंद हो सकता है, जब आपके पास इस्तेमाल का कोई खास उदाहरण हो या आपने तीसरे पक्ष की ऐसी स्क्रिप्ट बंडल की हो जो उनका इस्तेमाल लागू करने में इस्तेमाल करती है.

सुरक्षित कुकी

Secure कुकी एट्रिब्यूट सिर्फ़ https:// स्कीम के लिए इस्तेमाल किया जा सकता है. इस वजह से, chrome-extension:// पेज इस एट्रिब्यूट वाली कुकी सेट नहीं कर सकते.

इसका मतलब यह भी है कि एक्सटेंशन पेज ऐसे अन्य कुकी एट्रिब्यूट का इस्तेमाल नहीं कर सकते जहां Secure एट्रिब्यूट ज़रूरी है:

विभाजन और SameSite व्यवहार

chrome-extension:// पेजों पर सेट की गई कुकी हमेशा SameSite=Lax का इस्तेमाल करती हैं. इस वजह से, किसी एक्सटेंशन की ओर से अपने ऑरिजिन पर सेट की गई कुकी को कभी भी फ़्रेम में ऐक्सेस नहीं किया जा सकता और पार्टिशनिंग काम का नहीं होता.

तीसरे पक्ष की साइटों से जुड़ी कुकी के लिए, जैसे कि किसी एक्सटेंशन पेज के फ़्रेम में लोड की गई तीसरे पक्ष की साइट या एक्सटेंशन पेज से किसी तीसरे पक्ष के ऑरिजिन पर किया गया अनुरोध, वेब की तरह ही काम करता है. हालांकि, ये दो तरीकों से काम करती हैं:

  • अगर किसी टैब का टॉप-लेवल पेज chrome-extension:// पेज है, तो तीसरे पक्ष की कुकी सबफ़्रेम में भी ब्लॉक नहीं की जाएंगी.
  • अगर एक्सटेंशन के पास तीसरे पक्ष के लिए होस्ट की अनुमतियां हैं, तो एक्सटेंशन के किसी तीसरे पक्ष के अनुरोधों को एक ही साइट माना जाता है. इसका मतलब है कि SameSite=Strict कुकी भेजी जा सकती हैं. ध्यान दें कि यह सिर्फ़ नेटवर्क के अनुरोधों पर लागू होता है, JavaScript में document.cookie से ऐक्सेस पर नहीं. साथ ही, अगर तीसरे पक्ष की कुकी ब्लॉक की जाती हैं, तो यह लागू नहीं होता.

ध्यान दें कि तीसरे पक्ष की कुकी से जुड़ी सेटिंग पर, प्राइवसी सैंडबॉक्स के काम करने का असर पड़ता है. इन सेटिंग में ज़रूरत के हिसाब से बदलाव होते हैं.

chrome.cookies एपीआई, पार्टिशन की उस कुंजी को कंट्रोल करता है जिसे एपीआई के हर तरीके के साथ इस्तेमाल किया जा सके. ज़्यादा जानकारी के लिए, एपीआई का रेफ़रंस देखें.