ब्यौरा
कुकी में बदलाव करने और उनसे जुड़ी क्वेरी करने के लिए, chrome.cookies
API का इस्तेमाल करें. साथ ही, कुकी में बदलाव होने पर सूचना पाएं.
अनुमतियां
cookies
मेनिफ़ेस्ट
Cookies API का इस्तेमाल करने के लिए, आपको अपने मेनिफ़ेस्ट में "cookies" अनुमति का एलान करना होगा. साथ ही, आपको उन होस्ट के लिए होस्ट करने की अनुमतियां देनी होंगी जिनकी कुकी आपको ऐक्सेस करनी हैं. उदाहरण के लिए:
{
"name": "My extension",
...
"host_permissions": [
"*://*.google.com/"
],
"permissions": [
"cookies"
],
...
}
पार्टिशन करना
अलग-अलग सेक्शन में बांटी गई कुकी की मदद से, कोई साइट यह मार्क कर सकती है कि कुछ कुकी को टॉप लेवल फ़्रेम के ऑरिजिन के हिसाब से कुंजीबद्ध किया जाना चाहिए. इसका मतलब है कि अगर साइट A को साइट B और साइट C में iframe का इस्तेमाल करके एम्बेड किया जाता है, तो पार्टीशन की गई कुकी की वैल्यू हर साइट में अलग-अलग हो सकती है.
chrome.cookies
में पार्टीशनिंग की सुविधा काम नहीं करती. इसका मतलब है कि सभी तरीके, सभी पार्टीशन से कुकी पढ़ते और लिखते हैं. cookies.set()
तरीके से, कुकी को डिफ़ॉल्ट पार्टीशन में सेव किया जाता है.
एक्सटेंशन के लिए स्टोरेज के बंटवारे के सामान्य असर के बारे में जानने के लिए, स्टोरेज और कुकी देखें.
उदाहरण
examples/api/cookies डायरेक्ट्री में, Cookies API के इस्तेमाल का एक आसान उदाहरण देखा जा सकता है. अन्य उदाहरणों और सोर्स कोड देखने में मदद पाने के लिए, सैंपल देखें.
टाइप
Cookie
यह एचटीटीपी कुकी के बारे में जानकारी दिखाता है.
प्रॉपर्टी
-
डोमेन
स्ट्रिंग
कुकी का डोमेन (जैसे, "www.google.com", "example.com").
-
expirationDate
number ज़रूरी नहीं
कुकी के खत्म होने की तारीख. यह तारीख, यूनिक्स युग की शुरुआत से लेकर अब तक के कुल सेकंड की संख्या के तौर पर दिखाई जाती है. यह सेशन कुकी के लिए उपलब्ध नहीं है.
-
hostOnly
बूलियन
अगर कुकी सिर्फ़ होस्ट के लिए है, तो यह वैल्यू सही होती है. इसका मतलब है कि अनुरोध करने वाले होस्ट का डोमेन, कुकी के डोमेन से पूरी तरह मेल खाना चाहिए.
-
httpOnly
बूलियन
अगर कुकी को HttpOnly के तौर पर मार्क किया गया है, तो यह वैल्यू सही होती है. इसका मतलब है कि कुकी को क्लाइंट-साइड स्क्रिप्ट ऐक्सेस नहीं कर सकती हैं.
-
नाम
स्ट्रिंग
कुकी का नाम.
-
partitionKey
CookiePartitionKey ज़रूरी नहीं है
Chrome 119+Partitioned एट्रिब्यूट वाली कुकी को पढ़ने या उनमें बदलाव करने के लिए, पार्टीशन की.
-
पाथ
स्ट्रिंग
कुकी का पाथ.
-
sameSiteChrome 51 या इसके बाद के वर्शन
कुकी का SameSite स्टेटस. इसका मतलब है कि कुकी को किसी दूसरी साइट से किए गए अनुरोधों के साथ भेजा जाता है या नहीं.
-
सुरक्षित
बूलियन
अगर कुकी को Secure के तौर पर मार्क किया गया है, तो यह वैल्यू True होती है. इसका मतलब है कि इसका दायरा सुरक्षित चैनलों (आम तौर पर, एचटीटीपीएस) तक सीमित है.
-
सेशन
बूलियन
अगर कुकी, सेशन कुकी है, तो यह वैल्यू सही होती है. सेशन कुकी, खत्म होने की तारीख वाली परसिस्टेंट कुकी से अलग होती है.
-
storeId
स्ट्रिंग
इस कुकी को सेव करने वाले कुकी स्टोर का आईडी. यह आईडी, getAllCookieStores() में दिया गया है.
-
मान
स्ट्रिंग
कुकी की वैल्यू.
CookieDetails
कुकी की पहचान करने के लिए जानकारी.
प्रॉपर्टी
-
नाम
स्ट्रिंग
ऐक्सेस की जाने वाली कुकी का नाम.
-
partitionKey
CookiePartitionKey ज़रूरी नहीं है
Chrome 119+Partitioned एट्रिब्यूट वाली कुकी को पढ़ने या उनमें बदलाव करने के लिए, पार्टीशन की.
-
storeId
string ज़रूरी नहीं है
कुकी स्टोर का आईडी, जिसमें कुकी को ढूंढना है. डिफ़ॉल्ट रूप से, मौजूदा एक्ज़ीक्यूशन कॉन्टेक्स्ट के कुकी स्टोर का इस्तेमाल किया जाएगा.
-
url
स्ट्रिंग
वह यूआरएल जिससे ऐक्सेस की जाने वाली कुकी जुड़ी है. यह आर्ग्युमेंट पूरा यूआरएल हो सकता है. ऐसे में, यूआरएल पाथ के बाद मौजूद किसी भी डेटा (जैसे, क्वेरी स्ट्रिंग) को अनदेखा कर दिया जाता है. अगर मेनिफ़ेस्ट फ़ाइल में इस यूआरएल के लिए होस्ट अनुमतियां नहीं दी गई हैं, तो एपीआई कॉल नहीं किया जा सकेगा.
CookiePartitionKey
यह पार्टिशन्ड कुकी की पार्टिशन कुंजी को दिखाता है.
प्रॉपर्टी
-
hasCrossSiteAncestor
बूलियन ज़रूरी नहीं है
Chrome 130 या इसके बाद के वर्शनइससे पता चलता है कि कुकी को एक से ज़्यादा साइट के कॉन्टेक्स्ट में सेट किया गया था या नहीं. इससे, किसी दूसरी साइट के कॉन्टेक्स्ट में एम्बेड की गई टॉप-लेवल साइट को, एक ही साइट के कॉन्टेक्स्ट में टॉप-लेवल साइट की सेट की गई कुकी को ऐक्सेस करने से रोका जाता है.
-
topLevelSite
string ज़रूरी नहीं है
वह टॉप-लेवल साइट जिस पर पार्टिशन्ड कुकी उपलब्ध है.
CookieStore
यह ब्राउज़र में कुकी स्टोर को दिखाता है. उदाहरण के लिए, गुप्त मोड वाली विंडो, बिना गुप्त मोड वाली विंडो से अलग कुकी स्टोर का इस्तेमाल करती है.
प्रॉपर्टी
-
आईडी
स्ट्रिंग
कुकी स्टोर के लिए यूनीक आइडेंटिफ़ायर.
-
tabIds
number[]
उन सभी ब्राउज़र टैब के आइडेंटिफ़ायर जो इस कुकी स्टोर को शेयर करते हैं.
FrameDetails
फ़्रेम की पहचान करने के लिए जानकारी.
प्रॉपर्टी
-
documentId
string ज़रूरी नहीं है
दस्तावेज़ के लिए यूनीक आइडेंटिफ़ायर. अगर frameId और/या tabId दिए गए हैं, तो उनकी पुष्टि की जाएगी. इससे यह पता चलेगा कि वे दिए गए दस्तावेज़ आईडी से मिले दस्तावेज़ से मेल खाते हैं या नहीं.
-
frameId
number ज़रूरी नहीं
टैब में मौजूद फ़्रेम के लिए यूनीक आइडेंटिफ़ायर.
-
tabId
number ज़रूरी नहीं
फ़्रेम को शामिल करने वाले टैब के लिए यूनीक आइडेंटिफ़ायर.
OnChangedCause
कुकी में बदलाव होने की वजह. अगर किसी कुकी को "chrome.cookies.remove" को साफ़ तौर पर कॉल करके डाला या हटाया गया था, तो "cause" की वैल्यू "explicit" होगी. अगर कुकी की समयसीमा खत्म होने की वजह से उसे अपने-आप हटा दिया गया था, तो "वजह" के तौर पर "समयसीमा खत्म हो गई" दिखेगा. अगर किसी कुकी को इसलिए हटाया गया है, क्योंकि उसे पहले से खत्म हो चुकी तारीख से ओवरराइट किया गया था, तो "वजह" को "expired_overwrite" पर सेट किया जाएगा. अगर गार्बेज कलेक्शन की वजह से कोई कुकी अपने-आप हटा दी गई थी, तो "वजह" के तौर पर "हटाया गया" दिखेगा. अगर किसी कुकी को "सेट" कॉल की वजह से अपने-आप हटा दिया गया था, तो "वजह" के तौर पर "ओवरराइट करें" दिखेगा. इसके हिसाब से जवाब देने की योजना बनाएं.
Enum
"evicted"
"expired"
"explicit"
"expired_overwrite"
"overwrite"
SameSiteStatus
कुकी की 'SameSite' स्थिति (https://tools.ietf.org/html/draft-west-first-party-cookies). 'no_restriction' का मतलब है कि कुकी को 'SameSite=None' के साथ सेट किया गया है. 'lax' का मतलब है कि कुकी को 'SameSite=Lax' के साथ सेट किया गया है. वहीं, 'strict' का मतलब है कि कुकी को 'SameSite=Strict' के साथ सेट किया गया है. 'unspecified' का मतलब है कि कुकी को SameSite एट्रिब्यूट के बिना सेट किया गया है.
Enum
"no_restriction"
"lax"
"strict"
"unspecified"
तरीके
get()
chrome.cookies.get(
details: CookieDetails,
callback?: function,
): Promise<Cookie | undefined>
यह कुकी, किसी एक कुकी के बारे में जानकारी इकट्ठा करती है. अगर दिए गए यूआरएल के लिए, एक ही नाम की एक से ज़्यादा कुकी मौजूद हैं, तो सबसे लंबे पाथ वाली कुकी को दिखाया जाएगा. अगर एक ही पाथ लेंथ वाली कुकी मौजूद हैं, तो सबसे पहले बनाई गई कुकी को दिखाया जाएगा.
पैरामीटर
रिटर्न
-
Promise<Cookie | undefined>
Chrome 88 या इसके बाद का वर्शनप्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और इसके बाद के वर्शन के लिए काम करते हैं. अन्य प्लैटफ़ॉर्म को कॉलबैक का इस्तेमाल करना होगा.
getAll()
chrome.cookies.getAll(
details: object,
callback?: function,
): Promise<Cookie[]>
यह कुकी, किसी एक कुकी स्टोर से उन सभी कुकी को वापस लाती है जो दी गई जानकारी से मेल खाती हैं. कुकी को क्रम से लगाया जाएगा. इसमें सबसे लंबे पाथ वाली कुकी सबसे पहले दिखेंगी. अगर कई कुकी के पाथ की लंबाई एक जैसी है, तो सबसे पहले वे कुकी दिखेंगी जिन्हें सबसे पहले बनाया गया था. यह तरीका सिर्फ़ उन डोमेन के लिए कुकी वापस पाता है जिनके लिए एक्सटेंशन के पास होस्ट अनुमतियां हैं.
पैरामीटर
-
विवरण
ऑब्जेक्ट
यह जानकारी, वापस लाई जा रही कुकी को फ़िल्टर करने के लिए होती है.
-
डोमेन
string ज़रूरी नहीं है
यह कुकी, सिर्फ़ उन कुकी को वापस पाने की अनुमति देती है जिनके डोमेन, इस कुकी के डोमेन से मेल खाते हैं या इसके सबडोमेन हैं.
-
नाम
string ज़रूरी नहीं है
यह कुकी, नाम के हिसाब से कुकी को फ़िल्टर करती है.
-
partitionKey
CookiePartitionKey ज़रूरी नहीं है
Chrome 119+Partitioned एट्रिब्यूट वाली कुकी को पढ़ने या उनमें बदलाव करने के लिए, पार्टीशन की.
-
पाथ
string ज़रूरी नहीं है
यह कुकी, सिर्फ़ उन कुकी को वापस पाने की अनुमति देती है जिनका पाथ इस स्ट्रिंग से पूरी तरह मेल खाता है.
-
सुरक्षित
बूलियन ज़रूरी नहीं है
यह कुकी, कुकी को उनकी Secure प्रॉपर्टी के हिसाब से फ़िल्टर करती है.
-
सेशन
बूलियन ज़रूरी नहीं है
यह कुकी, सेशन कुकी और परसिस्टेंट कुकी को फ़िल्टर करती है.
-
storeId
string ज़रूरी नहीं है
वह कुकी स्टोर जिससे कुकी वापस लानी हैं. अगर इसे शामिल नहीं किया जाता है, तो मौजूदा एक्ज़ीक्यूशन कॉन्टेक्स्ट के कुकी स्टोर का इस्तेमाल किया जाएगा.
-
url
string ज़रूरी नहीं है
यह कुकी, सिर्फ़ उन कुकी को वापस लाती है जो दिए गए यूआरएल से मेल खाती हैं.
-
-
कॉलबैक
फ़ंक्शन ज़रूरी नहीं
callback
पैरामीटर ऐसा दिखता है:(cookies: Cookie[]) => void
-
कुकी का इस्तेमाल करता है
Cookie[]
ऐसी सभी मौजूदा कुकी जो अब भी मान्य हैं और दी गई कुकी की जानकारी से मेल खाती हैं.
-
रिटर्न
-
Promise<Cookie[]>
Chrome 88 या इसके बाद का वर्शनप्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और इसके बाद के वर्शन के लिए काम करते हैं. अन्य प्लैटफ़ॉर्म को कॉलबैक का इस्तेमाल करना होगा.
getAllCookieStores()
chrome.cookies.getAllCookieStores(
callback?: function,
): Promise<CookieStore[]>
यह कुकी, सभी मौजूदा कुकी स्टोर की सूची बनाती है.
पैरामीटर
-
कॉलबैक
फ़ंक्शन ज़रूरी नहीं
callback
पैरामीटर ऐसा दिखता है:(cookieStores: CookieStore[]) => void
-
cookieStores
सभी मौजूदा कुकी स्टोर.
-
रिटर्न
-
Promise<CookieStore[]>
Chrome 88 या इसके बाद का वर्शनप्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और इसके बाद के वर्शन के लिए काम करते हैं. अन्य प्लैटफ़ॉर्म को कॉलबैक का इस्तेमाल करना होगा.
getPartitionKey()
chrome.cookies.getPartitionKey(
details: FrameDetails,
callback?: function,
): Promise<object>
दिए गए फ़्रेम के लिए पार्टीशन कुंजी.
पैरामीटर
-
विवरण
-
कॉलबैक
फ़ंक्शन ज़रूरी नहीं
callback
पैरामीटर ऐसा दिखता है:(details: object) => void
-
विवरण
ऑब्जेक्ट
इस कुकी में, वापस लाई गई पार्टीशन कुंजी के बारे में जानकारी होती है.
-
partitionKey
Partitioned एट्रिब्यूट वाली कुकी को पढ़ने या उनमें बदलाव करने के लिए, पार्टीशन की.
-
-
रिटर्न
-
Promise<object>
प्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और इसके बाद के वर्शन के लिए काम करते हैं. अन्य प्लैटफ़ॉर्म को कॉलबैक का इस्तेमाल करना होगा.
remove()
chrome.cookies.remove(
details: CookieDetails,
callback?: function,
): Promise<object | undefined>
यह कुकी को नाम के हिसाब से मिटाता है.
पैरामीटर
-
विवरण
-
कॉलबैक
फ़ंक्शन ज़रूरी नहीं
callback
पैरामीटर ऐसा दिखता है:(details?: object) => void
-
विवरण
object ज़रूरी नहीं है
इस कुकी में, हटाई गई कुकी के बारे में जानकारी होती है. अगर किसी वजह से वीडियो नहीं हटाया जा सका, तो यह "null" होगा. साथ ही,
runtime.lastError
सेट हो जाएगा.-
नाम
स्ट्रिंग
हटा दी गई कुकी का नाम.
-
partitionKey
CookiePartitionKey ज़रूरी नहीं है
Chrome 119+Partitioned एट्रिब्यूट वाली कुकी को पढ़ने या उनमें बदलाव करने के लिए, पार्टीशन की.
-
storeId
स्ट्रिंग
उस कुकी स्टोर का आईडी जिससे कुकी हटाई गई थी.
-
url
स्ट्रिंग
हटा दी गई कुकी से जुड़ा यूआरएल.
-
-
रिटर्न
-
Promise<object | undefined>
Chrome 88 या इसके बाद का वर्शनप्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और इसके बाद के वर्शन के लिए काम करते हैं. अन्य प्लैटफ़ॉर्म को कॉलबैक का इस्तेमाल करना होगा.
set()
chrome.cookies.set(
details: object,
callback?: function,
): Promise<Cookie | undefined>
यह कुकी, दिए गए कुकी डेटा के साथ एक कुकी सेट करती है. अगर ऐसी कुकी पहले से मौजूद हैं, तो यह उन्हें ओवरराइट कर सकती है.
पैरामीटर
-
विवरण
ऑब्जेक्ट
सेट की जा रही कुकी के बारे में जानकारी.
-
डोमेन
string ज़रूरी नहीं है
कुकी का डोमेन. अगर इसे शामिल नहीं किया जाता है, तो कुकी सिर्फ़ होस्ट के लिए उपलब्ध हो जाती है.
-
expirationDate
number ज़रूरी नहीं
कुकी के खत्म होने की तारीख. यह तारीख, यूनिक्स युग की शुरुआत से लेकर अब तक के कुल सेकंड की संख्या के तौर पर दिखाई जाती है. अगर इसे छोड़ दिया जाता है, तो कुकी, सेशन कुकी बन जाती है.
-
httpOnly
बूलियन ज़रूरी नहीं है
कुकी को HttpOnly के तौर पर मार्क किया जाना चाहिए या नहीं. डिफ़ॉल्ट रूप से, यह 'गलत' पर सेट होती है.
-
नाम
string ज़रूरी नहीं है
कुकी का नाम. अगर इसे शामिल नहीं किया जाता है, तो डिफ़ॉल्ट रूप से यह खाली होता है.
-
partitionKey
CookiePartitionKey ज़रूरी नहीं है
Chrome 119+Partitioned एट्रिब्यूट वाली कुकी को पढ़ने या उनमें बदलाव करने के लिए, पार्टीशन की.
-
पाथ
string ज़रूरी नहीं है
कुकी का पाथ. डिफ़ॉल्ट रूप से, यह यूआरएल पैरामीटर के पाथ वाले हिस्से पर सेट होता है.
-
sameSite
SameSiteStatus optional
Chrome 51 या इसके बाद के वर्शनकुकी का सेम-साइट स्टेटस. डिफ़ॉल्ट रूप से इसकी वैल्यू "unspecified" होती है. इसका मतलब है कि अगर इसे शामिल नहीं किया जाता है, तो कुकी को SameSite एट्रिब्यूट की वैल्यू तय किए बिना सेट किया जाता है.
-
सुरक्षित
बूलियन ज़रूरी नहीं है
कुकी को Secure के तौर पर मार्क किया जाना चाहिए या नहीं. डिफ़ॉल्ट रूप से, यह 'गलत' पर सेट होती है.
-
storeId
string ज़रूरी नहीं है
कुकी स्टोर का आईडी, जिसमें कुकी सेट करनी है. डिफ़ॉल्ट रूप से, कुकी को मौजूदा एक्ज़ीक्यूशन कॉन्टेक्स्ट के कुकी स्टोर में सेट किया जाता है.
-
url
स्ट्रिंग
कुकी की सेटिंग से जुड़ा request-URI. इस वैल्यू से, बनाई गई कुकी के डिफ़ॉल्ट डोमेन और पाथ वैल्यू पर असर पड़ सकता है. अगर मेनिफ़ेस्ट फ़ाइल में इस यूआरएल के लिए होस्ट अनुमतियां नहीं दी गई हैं, तो एपीआई कॉल नहीं किया जा सकेगा.
-
मान
string ज़रूरी नहीं है
कुकी की वैल्यू. अगर इसे शामिल नहीं किया जाता है, तो डिफ़ॉल्ट रूप से यह खाली होता है.
-
-
कॉलबैक
फ़ंक्शन ज़रूरी नहीं
callback
पैरामीटर ऐसा दिखता है:(cookie?: Cookie) => void
-
कुकी
कुकी ज़रूरी नहीं है
इस कुकी में सेट की गई कुकी के बारे में जानकारी होती है. अगर किसी वजह से सेटिंग नहीं हो पाती है, तो यह "null" पर सेट हो जाएगा. साथ ही,
runtime.lastError
सेट हो जाएगा.
-
रिटर्न
-
Promise<Cookie | undefined>
Chrome 88 या इसके बाद का वर्शनप्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और इसके बाद के वर्शन के लिए काम करते हैं. अन्य प्लैटफ़ॉर्म को कॉलबैक का इस्तेमाल करना होगा.
इवेंट
onChanged
chrome.cookies.onChanged.addListener(
callback: function,
)
यह इवेंट तब ट्रिगर होता है, जब कोई कुकी सेट या हटाई जाती है. खास मामले के तौर पर ध्यान दें कि कुकी की प्रॉपर्टी अपडेट करने की प्रोसेस दो चरणों में पूरी होती है: अपडेट की जाने वाली कुकी को पहले पूरी तरह से हटा दिया जाता है. इससे "overwrite" के "वजह" वाली सूचना जनरेट होती है. इसके बाद, अपडेट की गई वैल्यू के साथ एक नई कुकी लिखी जाती है. इससे "वजह" "साफ़ तौर पर" के साथ दूसरी सूचना जनरेट होती है.
पैरामीटर
-
कॉलबैक
फ़ंक्शन
callback
पैरामीटर ऐसा दिखता है:(changeInfo: object) => void
-
changeInfo
ऑब्जेक्ट
-
कारण
कुकी में बदलाव होने की वजह.
-
कुकी
सेट की गई या हटाई गई कुकी के बारे में जानकारी.
-
निकाला गया
बूलियन
अगर कुकी हटा दी गई है, तो यह वैल्यू True पर सेट होती है.
-
-