पार्टिशन्ड कुकी से सेक्शन में बदली गई कुकी पर स्विच करना

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

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

इस समस्या को हल करने के लिए, दो विकल्प हैं: 1. आप जो कुकी बदल रहे हैं उसे खत्म करें 2. अपनी कुकी का नाम बदलना

ध्यान देने वाली मुख्य बातें

सेगमेंट में बांटी गई कुकी का इस्तेमाल शुरू करते समय, इन बातों का ध्यान रखें:

  1. प्रोग्राम के हिसाब से यह तय नहीं किया जा सकता कि एचटीटीपी अनुरोध में भेजी गई कुकी को बांटा गया है या नहीं. हालांकि, Chrome DevTools में कुकी के पार्टीशन किए गए स्टेटस को तय किया जा सकता है. CookieStore API का इस्तेमाल करके, उन कुकी के बीच अंतर किया जा सकता है जिनमें HttpOnly एट्रिब्यूट नहीं है. इनमें, पार्टिशन की गई और बिना पार्टिशन की गई कुकी शामिल हैं.
  2. सेगमेंट में बांटी गई कुकी, दो कुकी के बजाय अलग-अलग कुकी की जगह लागू होती हैं. यानी, एक जैसी दिखने वाली दो कुकी (जो नाम, डोमेन या पाथ जैसे एट्रिब्यूट एक जैसी होती हैं) को अलग कुकी माना जाएगा. ऐसा तब ही होगा, जब किसी एक कुकी में Partitioned एट्रिब्यूट होगा.
  3. ऐसी स्थिति से बचना बेहतर है, जहां आपके पास एक ही नेटवर्क कॉल में एक ही नाम से दो हिस्सों में बांटी गई कुकी और दूसरी कुकी का हिस्सा न हों.

बदली जा रही कुकी की समयसीमा खत्म करना

अगर आपकी साइट या सेवा के नाम में बदलाव नहीं किया जा सकता, तो आपके पास दो अलग-अलग सेगमेंट में बांटी गई कुकी बनाने का विकल्प है. हालांकि, मौजूदा कुकी की समयसीमा खत्म होने के बाद ही ऐसा किया जा सकता है. हालांकि, यह पता लगाने का कोई तरीका नहीं है कि किसी कुकी को पार्टिशन किया गया है या नहीं, लेकिन Set-Cookie एट्रिब्यूट वाले हेडर का असर उन कुकी पर नहीं पड़ेगा जिन्हें पार्टिशन नहीं किया गया है.

नीचे दिए गए उदाहरण में, example नाम की बिना सेक्शन वाली कुकी की समयसीमा खत्म करने का तरीका बताया गया है. साथ ही, यह भी बताया गया है कि सेक्शन वाली कुकी पर कोई असर न पड़े, भले ही उनका नाम एक ही हो. अगर cookieName नाम की कोई नई कुकी पहले से मौजूद है, तो उसे जोड़ा जाएगा या अपडेट किया जाएगा.

Set-Cookie: example=-1;HttpOnly;SameSite=None;Secure;Max-Age:0
Set-Cookie: cookieName=value;Secure;SameSite=None;MaxAge=34560000;Partitioned

अपनी कुकी का नाम बदलना

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

Set-Cookie: example-partitioned=value;Secure;SameSite=None;MaxAge=34560000;Partitioned

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

पार्टिशन की गई और बिना पार्टिशन की गई, दोनों तरह की कुकी को बनाए रखना

ट्रांज़िशन की अवधि के दौरान, सिंक की गई दो अलग-अलग कुकी बनाए रखें: एक ऐसी कुकी जो पार्टिशन की गई है और एक ऐसी कुकी जो नहीं है. उदाहरण के लिए, आपके पास auth और auth-partitioned, दोनों कुकी हो सकती हैं. इनमें से auth-partitioned कुकी, Partitioned एट्रिब्यूट के साथ सेट की गई है.

वैल्यू अपडेट होने पर, आपको दोनों कुकी सेट करने की कोशिश करनी चाहिए.

  • ऐसे क्लाइंट जिन पर तीसरे पक्ष की कुकी ब्लॉक की जाती हैं, लेकिन वे फ़िलहाल CHIPS के साथ काम नहीं करते: कोई भी कुकी स्वीकार नहीं की जाएगी.
  • तीसरे पक्ष की कुकी को ब्लॉक करने वाले और CHIPS के साथ काम करने वाले क्लाइंट पर: auth कुकी को अस्वीकार कर दिया जाएगा, लेकिन auth-partitioned कुकी को स्वीकार कर लिया जाएगा.
  • तीसरे पक्ष की कुकी को ब्लॉक न करने वाले क्लाइंट पर, auth और auth-partitioned, दोनों को स्वीकार किया जाता है. भले ही, वे CHIPS के साथ काम करते हों या नहीं.

जब आपके ऐप्लिकेशन को पुष्टि करने वाली कुकी पढ़नी हो, तो आपको सबसे पहले auth-partitioned को खोजना चाहिए. हालांकि, अगर आपको बदलाव को कुछ समय के लिए वापस रोल-बैक करना है, तो auth कुकी को खोजा जा सकता है.

जब यह पता चल जाए कि ज़्यादातर उपयोगकर्ताओं की कुकी रीफ़्रेश हो गई हैं, तो auth-partitioned कुकी को बंद किया जा सकता है. साथ ही, सामान्य पुष्टि करने वाली कुकी में, Partitioned एट्रिब्यूट जोड़ा जा सकता है.