logo
GeekFormat

Set-Cookie पार्सर

Set-Cookie Parser

विशेषताओं का निरीक्षण करने और जोखिम भरे SameSite / Secure संयोजनों को चिह्नित करने के लिए बहु-पंक्ति Set-Cookie प्रतिक्रिया हेडर पेस्ट करें।

कुकी विशेषता कार्ड

2 Set-Cookie
#1sessionabc123
path/
httponly(फ्लैग)
secure(फ्लैग)
samesiteLax
कोई स्पष्ट विशेषता समस्या नहीं मिली
#2preview1
max-age600 (10m 0s)

setCookieParser.attr.maxAgeHint

samesiteNone
secure(फ्लैग)
setCookieParser.warn.missingHttpOnlysetCookieParser.warn.missingPath

JSON पूर्वावलोकन

[
  {
    "index": 0,
    "raw": "session=abc123; Path=/; HttpOnly; Secure; SameSite=Lax",
    "name": "session",
    "value": "abc123",
    "decodedValue": "abc123",
    "attributes": [
      {
        "key": "path",
        "value": "/"
      },
      {
        "key": "httponly",
        "value": null
      },
      {
        "key": "secure",
        "value": null
      },
      {
        "key": "samesite",
        "value": "Lax"
      }
    ],
    "attributeMap": {
      "path": "/",
      "httponly": true,
      "secure": true,
      "samesite": "Lax"
    },
    "warnings": []
  },
  {
    "index": 1,
    "raw": "preview=1; Max-Age=600; SameSite=None; Secure",
    "name": "preview",
    "value": "1",
    "decodedValue": "1",
    "attributes": [
      {
        "key": "max-age",
        "value": "600"
      },
      {
        "key": "samesite",
        "value": "None"
      },
      {
        "key": "secure",
        "value": null
      }
    ],
    "attributeMap": {
      "max-age": "600",
      "samesite": "None",
      "secure": true
    },
    "warnings": [
      "warn.missingHttpOnly",
      "warn.missingPath"
    ]
  }
]

Set-Cookie हेडर पेस्ट करें, आपको तुरंत जवाब मिल जाएगा कि ब्राउज़र Cookie क्यों स्वीकार नहीं कर रहा है।

संबंधित सुझाव

उपयोग के मामले

  • जब ब्राउज़र Cookie लिखने से इनकार करता है, तो तुरंत पहचानें कि क्या यह SameSite नीति की समस्या है, Secure फ़्लैग की कमी है, या Path/Domain मेल नहीं खा रहा है
  • तृतीय-पक्ष लॉगिन/SSO/iframe एम्बेड परिदृश्यों में Cookie ब्राउज़र द्वारा ब्लॉक होने पर, जांचें कि SameSite=None को Secure के साथ सही तरीके से जोड़ा गया है या नहीं
  • सुरक्षा ऑडिट के दौरान, बल्क में जांचें कि इंटरफ़ेस द्वारा लौटाई गई Cookie में XSS चोरी को रोकने के लिए HttpOnly सेट किया गया है या नहीं, HTTP प्लेनटेक्स्ट ट्रांसमिशन को रोकने के लिए Secure सेट किया गया है या नहीं
  • __Host-/__Secure- उपसर्ग Cookie का उपयोग करते समय, सत्यापित करें कि क्या वे RFC 6265bis की अनिवार्य आवश्यकताओं को पूरा करते हैं, ताकि ब्राउज़र द्वारा चुपचाप छोड़े जाने से बचा जा सके
  • CHIPS (Partitioned Cookie) तृतीय-पक्ष Cookie पार्टीशनिंग समाधान को डीबग करते समय, पुष्टि करें कि Partitioned और Secure एक साथ घोषित किए गए हैं
  • सर्वर द्वारा Max-Age/Expires सेट करते समय, मान मान्य होने की पुष्टि करें, घड़ी के विचलन या Max-Age=0 के कारण Cookie तुरंत समाप्त होने से बचें
  • विभिन्न वातावरणों (विकास/परीक्षण/उत्पादन) के बीच Set-Cookie हेडर अंतर की तुलना करें, उत्पादन वातावरण में Cookie के गायब होने की अजीब समस्या का निवारण करें जबकि विकास वातावरण सामान्य है
  • DevTools या curl रिस्पॉन्स से पूरे रिस्पॉन्स हेडर को कॉपी करें, Set-Cookie: उपसर्ग को मैन्युअल रूप से हटाने की आवश्यकता नहीं है, टूल स्वचालित रूप से पहचानकर हटा देगा
  • इंटरफ़ेस दस्तावेज़ लिखते समय या WASM/WebWorker अनुरोध से संबंधित बग होने पर, पार्स किए गए JSON परिणाम को सीधे दस्तावेज़ में पेस्ट करके Cookie संरचना को स्पष्ट करें

विशेषताएं

  • कई Cookie का स्वतंत्र पार्सिंग: प्रत्येक पंक्ति Set-Cookie अलग कार्ड में, क्रमांक के साथ नाम, मान और URL-डिकोड किया गया मान प्रदर्शित करें, तुरंत देखें कि कौन सी Cookie में समस्या है
  • 14 एट्रिब्यूट सुरक्षा जांच: SameSite=None में Secure की कमी, अमान्य SameSite मान, Partitioned में Secure की कमी, HttpOnly की कमी, Path की कमी, SameSite की कमी, __Host- उपसर्ग का उल्लंघन, __Secure- में Secure की कमी, अमान्य/=0 Max-Age, डॉट से शुरू होने वाला Domain, Expires के साथ Max-Age कॉन्फ़िगर न होना आदि सामान्य त्रुटियों को स्वचालित रूप से पहचानें
  • सभी एट्रिब्यूट का पूर्ण विश्लेषण: SameSite, Secure, HttpOnly, Path, Domain, Expires, Max-Age, Partitioned को आइटमवार सूचीबद्ध करें, flag प्रकार के एट्रिब्यूट और मान वाले एट्रिब्यूट स्पष्ट रूप से दिखाई दें
  • Max-Age का स्वचालित रूपांतरण: सेकंड की संख्या को स्वचालित रूप से दिन/घंटे/मिनट/सेकंड में मानव-पठनीय समय में बदलें, उदाहरण के लिए Max-Age=2592000 को 30d के रूप में प्रदर्शित किया जाएगा
  • URL-डिकोड मान का स्वचालित प्रदर्शन: जब Cookie मान में %XX एन्कोडिंग होती है, तो डिकोड के बाद मूल पाठ स्वचालित रूप से प्रदर्शित होता है (जैसे sessionID%3Dabc → sessionID=abc), हरे तीर से चिह्नित
  • RFC 6265bis उपसर्ग जांच: __Host- और __Secure- उपसर्ग Cookie की अनुपालन आवश्यकताओं की सख्ती से जांच करें, जिसमें Path=/, Domain निषिद्ध, Secure सेट करना अनिवार्य शामिल है
  • एक-क्लिक मूल हेडर कॉपी: सभी पार्स की गई मूल Set-Cookie पंक्तियों को एकत्रित और कॉपी करें, टीम के साथ साझा करने के लिए ईमेल, Issue, दस्तावेज़ में पेस्ट करने में आसानी
  • संरचित JSON पूर्वावलोकन: पार्स परिणाम JSON प्रारूप आउटपुट का समर्थन करता है, जिसमें पूर्ण फ़ील्ड name/value/decodedValue/attributes/attributeMap/warnings शामिल हैं, स्क्रिप्ट और परीक्षण मामलों के लिए सीधे उपयोग किया जा सकता है
  • पूरी तरह से स्थानीय प्रसंस्करण: Set-Cookie सामग्री ब्राउज़र में स्थानीय रूप से पार्स की जाती है, किसी भी सर्वर पर अपलोड नहीं की जाती है, संवेदनशील Session, Token जैसी जानकारी के रिसाव से बचें
  • स्मार्ट चेतावनी बैज: प्रत्येक समस्या को विशिष्ट कारण के साथ नारंगी चेतावनी बैज से चिह्नित किया जाता है, RFC दस्तावेज़ को एक-एक करके देखने की आवश्यकता नहीं
  • बहु-पंक्ति बल्क इनपुट: एक बार में पूरे रिस्पॉन्स हेडर को पेस्ट करें (जैसे Chrome DevTools नेटवर्क पैनल से कॉपी करें), स्वचालित रूप से Set-Cookie: उपसर्ग हटाकर पंक्तिवार पार्स करें
  • उद्धरण चिह्नों और अर्धविराम वाले मानों का समर्थन: RFC मानक के अनुसार दोहरे उद्धरण चिह्नों वाले Cookie मानों और Expires तिथि में अर्धविराम को सही ढंग से संभालें, गलत तरीके से विभाजित नहीं करेगा

उपयोग कैसे करें

  1. ब्राउज़र DevTools का नेटवर्क पैनल खोलें, लक्षित अनुरोध ढूंढें, Response Headers क्षेत्र में Set-Cookie की सामग्री कॉपी करें (बहु-पंक्ति का समर्थन करता है, एक बार में सभी Cookie कॉपी करें)
  2. कॉपी किए गए Set-Cookie रिस्पॉन्स हेडर को इनपुट क्षेत्र में पेस्ट करें, प्रति पंक्ति एक Cookie (Set-Cookie: उपसर्ग को मैन्युअल रूप से हटाने की आवश्यकता नहीं है, टूल स्वचालित रूप से हटा देगा)
  3. टूल रीयल-टाइम में पार्स करता है, शीर्ष पर पहचाने गए Set-Cookie की संख्या प्रदर्शित होती है, नीचे प्रत्येक Cookie स्वतंत्र रूप से एक एट्रिब्यूट कार्ड है
  4. कार्ड के शीर्ष भाग में क्रमांक, Cookie नाम, मूल मान प्रदर्शित होता है; यदि मान में URL एन्कोडिंग है, तो डिकोड किया गया मान हरे तीर के बाद प्रदर्शित होगा
  5. कार्ड का मुख्य भाग SameSite, Secure, HttpOnly, Path, Domain, Max-Age, Expires, Partitioned आदि के अनुसार एट्रिब्यूट को आइटमवार प्रदर्शित करता है, Max-Age स्वचालित रूप से कोष्ठक के साथ पठनीय समय में रूपांतरित होगा
  6. कार्ड के निचले भाग में जांच परिणाम प्रदर्शित होता है: नारंगी चेतावनी बैज विशिष्ट समस्या को चिह्नित करता है (प्रत्येक समस्या का स्पष्ट हिंदी विवरण होता है), हरा बैज इंगित करता है कि कोई स्पष्ट समस्या नहीं मिली
  7. सर्वर कॉन्फ़िगरेशन से तुलना करने की आवश्यकता होने पर「मूल हेडर कॉपी करें」पर क्लिक करके सभी मूल Set-Cookie पंक्तियों को कॉपी करें; प्रोग्रामेटिक रूप से प्रोसेस करने की आवश्यकता होने पर「JSON पूर्वावलोकन」देखें

सामान्य प्रश्न

Set-Cookie हेडर सफलतापूर्वक सेट हो गया लेकिन ब्राउज़र ने मेरी Cookie क्यों नहीं सहेजी?

यह सबसे आम समस्या है, ब्राउज़र सक्रिय रूप से त्रुटि की रिपोर्ट नहीं करेगा बल्कि गैर-अनुपालक Cookie को चुपचाप छोड़ देगा। सामान्य कारणों में शामिल हैं: SameSite=None में Secure की कमी, Secure Cookie HTTP पेज पर सेट की गई (localhost को छोड़कर), __Host-/__Secure- उपसर्ग बाधाएं पूरी नहीं हुईं, Domain/Path मेल नहीं खाते, 4KB आकार सीमा से अधिक, Max-Age शून्य या नकारात्मक। सिफारिश है कि पहले Set-Cookie को इस टूल में पेस्ट करें, विशिष्ट कारण पहचानने के लिए चेतावनी बैज देखें, फिर Chrome DevTools → Application → Cookies खोलें, संबंधित डोमेन के तहत देखें कि क्या पीला चेतावनी त्रिभुज है, होवर करने पर विशिष्ट अस्वीकृति कारण दिखाई देगा।

SameSite के Strict, Lax, None में वास्तव में क्या अंतर है? कब किसका उपयोग करें?

Strict क्रॉस-साइट भेजने की पूरी तरह से अनुमति नहीं देता, सबसे सुरक्षित लेकिन बाहरी साइट के लिंक से क्लिक करने पर उपयोगकर्ता लॉग आउट दिखाई देगा, भुगतान/पासवर्ड बदलने जैसे संवेदनशील संचालन Cookie के लिए उपयुक्त। Lax Chrome 80+ का डिफ़ॉल्ट मान है, जब उपयोगकर्ता बाहरी लिंक से शीर्ष-स्तरीय GET नेविगेशन के माध्यम से आपकी वेबसाइट पर वापस आते हैं तो ले जाने की अनुमति देता है (बाहरी लिंक पर क्लिक करके आपकी साइट पर वापस आना), लेकिन iframe/img/script/XHR/POST फॉर्म जैसे उप-संसाधनों में नहीं ले जाता, अधिकांश परिदृश्यों के लिए अनुशंसित मान है। None सभी क्रॉस-साइट परिदृश्यों में भेजने की अनुमति देता है (SSO सिंगल साइन-ऑन, तृतीय-पक्ष iframe एम्बेड, क्रॉस-साइट API कॉल के लिए उपयोग किया जाता है), लेकिन एक साथ Secure सेट करना होगा, अन्यथा ब्राउज़र सीधे अस्वीकार कर देगा।

SameSite=None को Secure के साथ जोड़ना क्यों अनिवार्य है?

यह नियम Chrome द्वारा संस्करण 80 (फरवरी 2020) से अनिवार्य रूप से लागू किया गया है, Firefox, Edge, Safari ने भी इसका अनुसरण किया है। क्योंकि SameSite=None स्पष्ट रूप से Cookie को क्रॉस-साइट भेजने की अनुमति देता है, हमलावर क्रॉस-साइट परिदृश्य में CSRF हमले करना या स्नूपिंग करना आसान हो जाता है, जोखिम कम करने के लिए Secure (HTTPS एन्क्रिप्टेड ट्रांसमिशन) के साथ जोड़ना अनिवार्य है। यदि आपकी SameSite=None Cookie HTTP के तहत सेट की जाती है, तो ब्राउज़र बिना स्टोर किए सीधे छोड़ देगा। यह टूल SameSite=None में Secure की कमी के संयोजन का पता लगाकर लाल चेतावनी देगा।

Max-Age और Expires में से किसका उपयोग करें? क्या अंतर है?

Max-Age का प्राथमिकता से उपयोग करें। Max-Age सापेक्ष समय है (कितने सेकंड बाद समाप्त), क्लाइंट घड़ी पर निर्भर नहीं करता, ब्राउज़र प्राप्त करने के बाद उलटी गिनती शुरू कर देता है; Expires पूर्ण समय बिंदु है, जो उपयोगकर्ता के कंप्यूटर के स्थानीय समय पर निर्भर करता है (उपयोगकर्ता घड़ी को 1970 में बदल दे तो Cookie तुरंत समाप्त हो जाएगी)। जब दोनों एक साथ मौजूद हों तो Max-Age की प्राथमिकता अधिक होती है (RFC 6265 स्पष्ट रूप से निर्धारित करता है)। यदि दोनों सेट नहीं हैं, तो Cookie「सत्र Cookie」बन जाती है, ब्राउज़र बंद होने पर समाप्त हो जाती है। यह टूल Expires सेट करने लेकिन Max-Age सेट न करने के मामले में सुझाव देगा, Max-Age जोड़ने की सिफारिश करेगा। ध्यान दें कि Max-Age की इकाई सेकंड है मिलीसेकंड नहीं।

Path=/ और Path सेट न करने में क्या अंतर है?

Path यह निर्धारित करता है कि ब्राउज़र किन URL पथों के अनुरोधों में यह Cookie ले जाएगा। Path सेट न करने पर, ब्राउज़र डिफ़ॉल्ट रूप से「रिस्पॉन्स URL के अंतिम खंड को हटाने के बाद का पथ」उपयोग करता है, उदाहरण के लिए /api/user/login से Cookie सेट करते समय डिफ़ॉल्ट Path /api/user/ है, तो / पथ और /order/ के तहत अनुरोध इस Cookie को नहीं ले जाएंगे। स्पष्ट रूप से Path=/ सेट करने से Cookie पूरी साइट पर प्रभावी हो सकती है। ध्यान दें कि Path मिलान उपसर्ग मिलान है, Path=/api /api/, /api/user, /api/v2/abc आदि से भी मेल खाएगा। __Host- उपसर्ग Cookie के लिए Path=/ अनिवार्य है।

Domain की शुरुआत में डॉट (जैसे .example.com) और बिना डॉट के क्या अंतर है?

आधुनिक ब्राउज़र (Chrome, Firefox, Edge, Safari के हाल के संस्करण) में दोनों समतुल्य हो गए हैं, दोनों Cookie को example.com और इसके सभी उपडोमेन (a.example.com, b.c.example.com) पर प्रभावी बनाएंगे। डॉट से शुरुआत RFC 2109 युग की पुरानी लेखन शैली है, RFC 6265 ने स्पष्ट रूप से अग्रणी डॉट को अनदेखा करने का निर्धारण किया है। हालांकि, पठनीयता के लिए बिना डॉट के रूप में लिखने की सिफारिश की जाती है। यह टूल डोमेन के अग्रणी डॉट वाले मामले के लिए सुझाव देगा (त्रुटि नहीं है, लेकिन ऐतिहासिक विरासत लेखन शैली है)। ध्यान दें: Domain सेट न करने पर Cookie केवल वर्तमान होस्ट पर प्रभावी होती है (उपडोमेन नहीं ले जाते), Domain सेट करने के बाद उपडोमेन पर प्रभावी होगी।

__Host- और __Secure- उपसर्ग क्या हैं? क्या उपसर्ग नहीं लिख सकते?

ये RFC 6265bis द्वारा पेश किए गए Cookie नाम सुरक्षा उपसर्ग हैं, जिनका उपयोग उच्च-सुरक्षा Cookie के लिए कठोर बाधाएं जोड़ने के लिए किया जाता है: जब ब्राउज़र देखता है कि Cookie नाम __Host- से शुरू होता है, तो यह अनिवार्य रूप से आवश्यक करेगा कि एक साथ Secure, Path=/ सेट हों, Domain सेट न किया जाए, किसी भी शर्त को पूरा न करने पर सीधे स्टोर करने से इनकार कर देगा; __Secure- उपसर्ग के लिए Secure सेट करना अनिवार्य है, अन्य एट्रिब्यूट कॉन्फ़िगर किए जा सकते हैं। उपसर्ग न लिखने से भी काम चल सकता है (अधिकांश Cookie उपसर्ग का उपयोग नहीं करतीं), लेकिन सत्र पहचानकर्ता, प्राधिकरण Token जैसी उच्च-सुरक्षा Cookie के लिए __Host- उपसर्ग का उपयोग करने की दृढ़ता से सिफारिश की जाती है, क्योंकि यह उपडोमेन/पथ स्तर की Cookie इंजेक्शन हमलों को रोक सकता है। यह टूल दोनों प्रकार के उपसर्गों की अनुपालना की स्वचालित रूप से जांच करेगा।

क्या HttpOnly Cookie वास्तव में सुरक्षित है? क्या यह XSS और CSRF को रोकती है?

HttpOnly JavaScript को document.cookie के माध्यम से Cookie मान पढ़ने से रोक सकता है, <strong>XSS सत्र चोरी को कम करने</strong> के लिए एक महत्वपूर्ण रक्षा पंक्ति है, लेकिन सर्व-उपचार नहीं है: XSS हमलावर अभी भी उपयोगकर्ता के ब्राउज़र में अनुरोध भेज सकता है (अनुरोध स्वचालित रूप से Cookie ले जाता है) संचालन करने के लिए (यह CSRF का दायरा है); HttpOnly भी CSRF हमले से रक्षा नहीं कर सकता (SameSite या CSRF Token के संयोजन की आवश्यकता है)। केवल जब HttpOnly+Secure+SameSite=Lax/Strict तीनों का एक साथ उपयोग किया जाता है तभी बुनियादी सुरक्षा स्तर प्राप्त होता है। संवेदनशील Cookie (session, JWT, access_token) HttpOnly होनी चाहिए, आवश्यक न होने पर फ्रंट-एंड JS को पढ़ने न दें। यह टूल HttpOnly की कमी वाली Cookie पर चेतावनी देगा।

Partitioned (CHIPS) Cookie क्या है? कब उपयोग करने की आवश्यकता है?

Partitioned Chrome द्वारा तृतीय-पक्ष Cookie की समाप्ति का सामना करने के लिए पेश किया गया नया एट्रिब्यूट है, जिसका पूरा नाम Cookies Having Independent Partitioned State (CHIPS) है। पारंपरिक तृतीय-पक्ष Cookie (जैसे विज्ञापन/एम्बेड सेवा द्वारा कई साइटों पर सेट की गई Cookie) वैश्विक रूप से साझा की जाती थीं, जिनका उपयोग क्रॉस-साइट उपयोगकर्ता ट्रैकिंग के लिए किया जाता था। Partitioned जोड़ने के बाद, ब्राउज़र उस तृतीय-पक्ष Cookie को शीर्ष-स्तरीय साइट के अनुसार अलग-अलग स्टोर करेगा: उपयोगकर्ता द्वारा साइट A और साइट B पर देखी गई तृतीय-पक्ष Cookie पूरी तरह से स्वतंत्र हैं, क्रॉस-साइट पहचान साझा नहीं कर सकतीं। उपयोग के परिदृश्य: एम्बेडेड वीडियो/मैप/भुगतान घटक, तृतीय-पक्ष ग्राहक सेवा प्लगइन, क्रॉस-साइट SSO iframe एम्बेड। Partitioned का उपयोग करते समय एक साथ Secure सेट करना होगा, __Host- उपसर्ग के साथ उपयोग करने की सिफारिश की जाती है।

एक Cookie अधिकतम कितना डेटा स्टोर कर सकती है? प्रति डोमेन कितनी रख सकते हैं?

RFC 6265 के अनुसार, ब्राउज़र प्रति Cookie कम से कम 4096 बाइट का समर्थन करते हैं (नाम, मान और एट्रिब्यूट सहित), प्रमुख ब्राउज़र (Chrome/Firefox/Safari/Edge) सभी इस सीमा का पालन करते हैं, अतिरिक्त भाग को चुपचाप काट दिया जाएगा या छोड़ दिया जाएगा। संख्या सीमाएं ब्राउज़र के अनुसार भिन्न होती हैं: Chrome प्रति डोमेन लगभग 180, Firefox लगभग 150, Safari लगभग 600 (और ITP की सात दिन की सफाई नीति से प्रभावित), सीमा से अधिक होने पर ब्राउज़र LRU रणनीति के अनुसार सबसे पुरानी Cookie को हटा देगा। सिफारिश है कि Cookie केवल सत्र पहचानकर्ता स्टोर करें, बड़े व्यावसायिक डेटा को Cookie में न रखें (व्यावसायिक डेटा localStorage या सर्वर सत्र में रखें)।

क्या Chrome DevTools से सीधे Set-Cookie कॉपी करके पार्स करने का समर्थन है? क्या मैन्युअल रूप से उपसर्ग हटाने की आवश्यकता है?

पूरी तरह से समर्थन है, मैन्युअल प्रसंस्करण की आवश्यकता नहीं है। आप Chrome DevTools → नेटवर्क पैनल में लक्षित अनुरोध पर क्लिक कर सकते हैं, Response Headers क्षेत्र में Set-Cookie के मान पर राइट-क्लिक करके सीधे कॉपी कर सकते हैं (कई पंक्तियों के लिए, Ctrl/⌘+क्लिक करके बहु-चयन करें या पूरा भाग कॉपी करें), इस टूल के इनपुट क्षेत्र में पेस्ट करें बस। टूल स्वचालित रूप से प्रत्येक पंक्ति की शुरुआत में Set-Cookie: उपसर्ग हटा देगा (केस-असंवेदी), स्वचालित रूप से पंक्ति के आरंभ और अंत के रिक्त स्थान को प्रोसेस करेगा, Expires तिथि में निहित अल्पविराम, अर्धविराम जैसे विशेष वर्णों को सही ढंग से संभालेगा, और दोहरे उद्धरण चिह्नों वाले Cookie मानों को भी सही ढंग से संभाल सकता है।

Cookie मान में गैर-ASCII या विशेष वर्ण %XX रूप में क्यों हो जाते हैं?

RFC 6265 की आवश्यकता है कि Cookie मान केवल ASCII वर्ण सेट के सुरक्षित उपसमुच्चय का उपयोग कर सकते हैं, सीधे गैर-ASCII वर्ण, रिक्त स्थान, अल्पविराम, अर्धविराम आदि शामिल नहीं कर सकते। कई सर्वर-साइड फ्रेमवर्क Cookie सेट करते समय गैर-ASCII वर्णों के लिए स्वचालित रूप से URL एन्कोडिंग (encodeURIComponent/Percent-encoding) करते हैं, उदाहरण के लिए हिंदी पाठ को %XX रूप में एन्कोड किया जाएगा। ब्राउज़र वापस भेजते समय भी एन्कोडिंग रूप बनाए रखता है। जब यह टूल पता लगाता है कि मान में %XX एन्कोडिंग है, तो मूल मान के पास हरे तीर से decodeURIComponent डिकोड के बाद मूल पाठ स्वचालित रूप से प्रदर्शित करेगा, ताकि आप वास्तविक सामग्री आसानी से देख सकें।

Set-Cookie और Cookie रिक्वेस्ट हेडर में क्या अंतर है?

दोनों हेडर पूरी तरह से अलग दिशा के हैं: Set-Cookie रिस्पॉन्स हेडर है (सर्वर → ब्राउज़र), केवल रिस्पॉन्स में प्रकट होता है, कई बार प्रकट हो सकता है, प्रत्येक बार एक Cookie सेट करता है, जिसमें पूर्ण एट्रिब्यूट (Secure/HttpOnly/Path/Domain आदि) होते हैं; Cookie रिक्वेस्ट हेडर है (ब्राउज़र → सर्वर), प्रत्येक अनुरोध में केवल एक बार प्रकट होता है, अंदर वर्तमान में स्कोप से मेल खाने वाली सभी Cookie के फ्लैट name=value युग्म होते हैं (name1=v1; name2=v2), इसमें बिल्कुल भी एट्रिब्यूट जानकारी नहीं होती। मतलब सर्वर अनुरोध से यह नहीं जान सकता कि किसी Cookie में HttpOnly या Secure सेट है या नहीं, एट्रिब्यूट जानकारी केवल ब्राउज़र ही स्थानीय रूप से स्टोर करता है। Cookie रिक्वेस्ट हेडर पार्स करने के लिए कृपया संबंधित <a href='/network/http-cookie-parser/'>Cookie रिक्वेस्ट हेडर पार्सर</a> का उपयोग करें।

Safari में मेरी Cookie कुछ दिनों बाद क्यों गायब हो जाती है?

यह Safari का इंटेलिजेंट ट्रैकिंग प्रिवेंशन (ITP: Intelligent Tracking Prevention) तंत्र कार्य कर रहा है। ITP 2.1 से, यदि उपयोगकर्ता 7 दिनों के भीतर उस डोमेन से सीधे इंटरैक्ट नहीं करता (अर्थात् उस डोमेन की साइट पर सीधे नहीं गया), तो Safari उस डोमेन के अंतर्गत सभी Cookie और साइट डेटा को साफ़ कर देगा, चाहे Max-Age/Expires कितना भी लंबा सेट किया हो। यह तृतीय-पक्ष एम्बेड सेवाओं को सबसे अधिक प्रभावित करता है, मुख्य साइट की Cookie पर उपयोगकर्ता के निरंतर एक्सेस के तहत कोई प्रभाव नहीं पड़ता। इसके अलावा Safari तृतीय-पक्ष Cookie पर Chrome की तुलना में भी सख्त प्रतिबंध लगाता है। समाधान में शामिल हैं: Partitioned एट्रिब्यूट का उपयोग करना, Storage Access API के माध्यम से अनुमति का अनुरोध करना, या जब उपयोगकर्ता मुख्य साइट पर जाए तो Cookie को फिर से रीफ्रेश करना। इस टूल के समस्या निवारण अध्याय में अधिक विस्तृत Safari डीबगिंग दिशानिर्देश हैं।

क्या टूल कई Set-Cookie के बल्क पार्सिंग का समर्थन करता है? क्या Cookie सामग्री को सर्वर पर अपलोड करेगा?

बल्क पार्सिंग का समर्थन करता है। इनपुट क्षेत्र कितनी भी पंक्तियों के Set-Cookie पेस्ट करने का समर्थन करता है (उदाहरण के लिए एक बार में पूरे रिस्पॉन्स हेडर को पेस्ट करना), प्रत्येक Set-Cookie को स्वतंत्र क्रमांक के साथ पार्स किया जाएगा, कई एट्रिब्यूट कार्ड प्रत्येक के एट्रिब्यूट और चेतावनियों को अलग-अलग प्रदर्शित करेंगे। सभी पार्सिंग प्रक्रिया पूरी तरह से आपके ब्राउज़र में स्थानीय रूप से पूरी होती है (शुद्ध फ्रंट-एंड JavaScript प्रसंस्करण), Cookie सामग्री किसी भी सर्वर पर अपलोड नहीं की जाती, न ही कोई नेटवर्क अनुरोध भेजा जाता है, आपके द्वारा पेस्ट की गई Session/Token जैसी संवेदनशील जानकारी आपके कंप्यूटर से बाहर नहीं जाएगी, निश्चिंत होकर उपयोग कर सकते हैं।

术语表

Set-Cookie
HTTP रिस्पॉन्स हेडर, जिसके माध्यम से सर्वर ब्राउज़र को Cookie स्टोर करने का निर्देश देता है, एक रिस्पॉन्स में कई बार प्रकट हो सकता है।
Cookie (रिक्वेस्ट हेडर)
HTTP रिक्वेस्ट हेडर, स्कोप आवश्यकताओं को पूरा करने वाले Cookie नाम-मान युग्मों की सूची जिसे ब्राउज़र स्वचालित रूप से संलग्न करता है, इसमें एट्रिब्यूट नहीं होते।
HttpOnly
Cookie एट्रिब्यूट फ़्लैग। सेट करने के बाद JavaScript document.cookie के माध्यम से इस Cookie को नहीं पढ़ सकता है, मुख्य रूप से XSS सत्र चोरी से बचाव करता है।
Secure
Cookie एट्रिब्यूट फ़्लैग। सेट करने के बाद ब्राउज़र केवल HTTPS (या localhost) एन्क्रिप्टेड कनेक्शन में ही यह Cookie भेजता है।
SameSite
Cookie एट्रिब्यूट, नियंत्रित करता है कि क्रॉस-साइट अनुरोध Cookie लेकर जाते हैं या नहीं, मान Strict/Lax/None हैं। Chrome 80+ डिफ़ॉल्ट Lax है।
Max-Age
Cookie एट्रिब्यूट, Cookie के जीवित रहने के सेकंड की संख्या निर्दिष्ट करता है, Expires से प्राथमिकता रखता है, उपयोग करने की सिफारिश की जाती है। =0 का अर्थ तुरंत हटाना है।
Expires
Cookie एट्रिब्यूट, Cookie की विशिष्ट समाप्ति समय (HTTP-date) निर्दिष्ट करता है, क्लाइंट घड़ी पर निर्भर करता है।
Path
Cookie एट्रिब्यूट, Cookie के प्रभावी होने वाले URL पथ उपसर्ग को सीमित करता है, डिफ़ॉल्ट रूप से रिस्पॉन्स URL का निर्देशिका भाग लेता है।
Domain
Cookie एट्रिब्यूट, Cookie के प्रभावी होने वाले डोमेन को सीमित करता है। सेट न करने पर केवल वर्तमान होस्ट तक सीमित; सेट करने पर उपडोमेन पर प्रभावी होगा।
Partitioned (CHIPS)
Cookie एट्रिब्यूट फ़्लैग, तृतीय-पक्ष Cookie पार्टीशन स्टोरेज को सक्षम करता है, Chrome द्वारा तृतीय-पक्ष Cookie को समाप्त करने के बाद का विकल्प समाधान है, Secure के साथ जोड़ा जाना चाहिए।
__Host- उपसर्ग
Cookie नाम उपसर्ग सुरक्षा बाधा। आवश्यक है कि Secure, Path=/, Domain सेट न किया जाए, उल्लंघन करने पर ब्राउज़र स्टोर करने से इनकार कर देगा।
__Secure- उपसर्ग
Cookie नाम उपसर्ग सुरक्षा बाधा। आवश्यक है कि Secure सेट किया जाए, उल्लंघन करने पर ब्राउज़र स्टोर करने से इनकार कर देगा।
सत्र Cookie (Session Cookie)
वह Cookie जिसमें Max-Age और Expires सेट नहीं होते, ब्राउज़र बंद होने के बाद स्वचालित रूप से हट जाती है।
तृतीय-पक्ष Cookie (Third-party Cookie)
एक्सेस किए जा रहे पेज के डोमेन के अलावा किसी अन्य डोमेन के तहत सेट की गई Cookie, आमतौर पर विज्ञापन, ट्रैकिंग, iframe एम्बेड जैसी तृतीय-पक्ष सेवाओं द्वारा सेट की जाती है, विभिन्न ब्राउज़र धीरे-धीरे इन्हें प्रतिबंधित कर रहे हैं।

SameSite तीन रणनीतियों की तुलना क्विक रेफरेंस टेबल

Set-Cookie एट्रिब्यूट संपूर्ण संदर्भ तालिका (RFC 6265bis)

सामान्य ब्राउज़र Set-Cookie आकार और संख्या सीमाएं

Troubleshooting