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.