HTTP प्रोटोकॉल में कुकीज़ कैसे पास की जाती हैं?


जवाबों:


295

सर्वर कुकी फ़ील्ड सेट करने के लिए अपनी प्रतिक्रिया हेडर में निम्नलिखित भेजता है।

Set-Cookie:नाम का =मान

यदि कोई कुकी सेट है, तो ब्राउज़र अपने अनुरोध शीर्षलेख में निम्नलिखित भेजता है।

Cookie:नाम का =मान

देखें HTTP कुकी अधिक जानकारी के लिए विकिपीडिया पर लेख।


क्या यह सच है कि कुकी केवल GET / POST क्रिया के साथ काम करती है, लेकिन कनेक्ट नहीं?
— पर्लव

5
@PerlDev ऐसा कुछ भी नहीं है जिसे मैं rfc2109 में देख सकता हूं जो कहता है कि इसे GET / POST के अलावा अन्य अनुरोधों के साथ काम नहीं करना चाहिए, लेकिन मुझे संदेह है कि ब्राउज़र और सर्वर कार्यान्वयन उन मामलों में इसे लागू नहीं कर सकते हैं।
— 15

5
ध्यान दें कि RFC 2109 के अनुसार यदि कोई उपयोगकर्ता एजेंट या ब्राउज़र कई कुकीज़ भेजता है, तो यह उन्हें सेमीकॉलन द्वारा सीमांकित एक ही क्षेत्र में डाल देगा:Cookie: name1=value1; name2=value2; ...
— jotrocken

34

कुकीज़ HTTP हेडर के रूप में अनुरोध (क्लाइंट -> सर्वर), और प्रतिक्रिया (सर्वर -> क्लाइंट) दोनों में पारित की जाती हैं।


2
तो किसी भी अनुरोध में जो किया जाता है, क्या सभी कुकीज़ ipso facto भेजी जाती हैं?
— बीकेएसपार्जिन

32

इसके अलावा यह अन्य उत्तरों में क्या लिखा गया है, कुकी के पथ से संबंधित अन्य विवरण, कुकी की अधिकतम आयु, चाहे वह सुरक्षित हो या सेट-कुकी प्रतिक्रिया हेडर में पारित न हो। उदाहरण के लिए:

Set-Cookie:नाम =मान [ ; expires=तिथि ] [ ; domain=डोमेन ] [ ; path=पथ ] [ ; secure]


हालांकि, इन सभी विवरणों को क्लाइंट द्वारा सर्वर से वापस नहीं किया जाता है जब अगले HTTP अनुरोध करते हैं।

आप HttpOnlyअपनी कुकी के अंत में ध्वज भी सेट कर सकते हैं , यह इंगित करने के लिए कि आपकी कुकी httponly है और जावास्क्रिप्ट कोड द्वारा लिपियों में इसे एक्सेस करने की अनुमति नहीं दी जानी चाहिए। यह सत्र-अपहरण जैसे हमलों को रोकने में मदद करता है।

अधिक जानकारी के लिए, RFC 2109 देखें । निकोलस सी। ज़कस के लेख पर भी नज़र डालें, HTTP कूकीज़ ने समझाया ।


2
यहाँ एक तरह से लिंकबैक के बजाय ज़कस के लेख का सीधा लिंक है: humanwhocodes.com/blog/2009/05/05/http-cookies-explained
— जोसेफ

13

उदाहरण के रूप में स्क्रिप्ट बनाएं:

#!/bin/bash

http_code=200
mime=text/html

echo -e "HTTP/1.1 $http_code OK\r"
echo "Content-type: $mime"
echo
echo "Set-Cookie: name=F"

फिर निष्पादन योग्य और इस तरह निष्पादित करें।

./resp | nc -l -p 12346

ब्राउज़र खोलें और URL ब्राउज़ करें: http: // localhost: 1236 आपको कुकी मान दिखाई देगा जो ब्राउज़र द्वारा भेजा गया है

    [आ @ बबबबबब] $ ./resp | एनसी -एल-पी १२३४६
    GET / HTTP / 1.1
    होस्ट: xxx.xxx.xxx.xxx:12346
    कनेक्शन: जीवित रखें
    कैश-कंट्रोल: अधिकतम आयु = 0
    स्वीकार करें: पाठ / html, आवेदन / xhtml + xml, अनुप्रयोग / xml; q = 0.9, छवि / वेबप, * / *; q = 0.8 =
    अपग्रेड-असुरक्षित अनुरोध: 1
    उपयोगकर्ता-एजेंट: मोज़िला / 5.0 (विंडोज़ एनटी 6.1) AppleWebKit / 537.36 (KHTML, जैसे गेको) क्रोम / 49.0.2623.112 सफारी / 537.36
    स्वीकार-एनकोडिंग: गज़िप, अपस्फीति, sdch
    स्वीकार-भाषा: en-US, en; q = 0.8, ru; q = 0.6
    कुकी: नाम = एफ

3
यदि कई कुकीज़ हैं तो क्या होगा? क्या वे अल्पविराम से अलग हो गए हैं?
— मार्क बुईकेमा

लगता है कि वे एक नए कुकी के रूप में स्थापित हैं। कुकी: नाम = एफ कुकी: नाम = ए
— ईज़ीवेडो

2
@MarkBuikema, देख docs.microsoft.com/en-us/windows/desktop/wininet/http-cookies । उन्हें इस तरह भेजा जाता है: कुकी: <name> = <value> [; <name> = <value>] ...
— बेन व्हीलर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.