सर्वर और क्लाइंट पर कुकीज़ बनाने के बीच क्या अंतर है? क्या इन्हें सर्वर साइड कुकीज़ और क्लाइंट साइड कुकीज़ कहा जाता है? क्या कुकीज़ बनाने का एक तरीका है जो केवल सर्वर पर या क्लाइंट पर पढ़ा जा सकता है?
सर्वर और क्लाइंट पर कुकीज़ बनाने के बीच क्या अंतर है? क्या इन्हें सर्वर साइड कुकीज़ और क्लाइंट साइड कुकीज़ कहा जाता है? क्या कुकीज़ बनाने का एक तरीका है जो केवल सर्वर पर या क्लाइंट पर पढ़ा जा सकता है?
जवाबों:
कुकीज़ ब्राउज़र पर राज्य की जानकारी संग्रहीत करने के लिए वेबसाइटों द्वारा उपयोग की जाने वाली कुंजी / मूल्य जोड़े हैं। मान लें कि आपके पास एक वेबसाइट (उदाहरण.कॉम) है, जब ब्राउज़र वेबपेज का अनुरोध करता है तो वेबसाइट ब्राउज़र पर जानकारी स्टोर करने के लिए कुकीज़ भेज सकती है।
ब्राउज़र अनुरोध उदाहरण:
GET /index.html HTTP/1.1
Host: www.example.com
उदाहरण सर्वर से उत्तर:
HTTP/1.1 200 OK
Content-type: text/html
Set-Cookie: foo=10
Set-Cookie: bar=20; Expires=Fri, 30 Sep 2011 11:48:00 GMT
... rest of the response
यहां दो कुकीज़ foo = 10 और बार = 20 ब्राउज़र पर संग्रहीत हैं। दूसरा 30 सितंबर को समाप्त होगा। प्रत्येक बाद के अनुरोध में ब्राउज़र कुकीज़ को सर्वर पर वापस भेज देगा।
GET /spec.html HTTP/1.1
Host: www.example.com
Cookie: foo=10; bar=20
Accept: */*
सर्वर साइड कुकीज़ को "सत्र" के रूप में जाना जाता है। इस मामले में वेबसाइट ब्राउज़र पर एक एकल कुकी संग्रहीत करती है जिसमें एक अद्वितीय सत्र पहचानकर्ता होता है। स्थिति की जानकारी (foo = 10 और बार = 20 ऊपर) सर्वर पर संग्रहीत की जाती है और सर्वर पर संग्रहीत डेटा के साथ अनुरोध की पहचान करने के लिए सत्र पहचानकर्ता का उपयोग किया जाता है।
आप स्टोर करने के लिए सत्र और कुकीज़ दोनों का उपयोग कर सकते हैं: प्रमाणीकरण डेटा, उपयोगकर्ता प्राथमिकताएं, ई-कॉमर्स वेबसाइट में एक चार्ट की सामग्री, आदि ...
समाधान के पेशेवरों और विपक्षों के नीचे। ये मेरे दिमाग में सबसे पहले आते हैं, निश्चित रूप से अन्य हैं।
कुकी पेशेवरों:
कुकी विपक्ष:
सत्र पेशेवरों:
सत्र विपक्ष:
secure
:?
आप शायद Http केवल कुकीज़ और उनके काउंटर भाग के बीच अंतर का मतलब है ?
Http केवल क्लाइंट साइड जावास्क्रिप्ट, केवल सर्वर साइड में ही कुकीज़ को एक्सेस किया जा सकता है (पढ़ा या लिखा जा सकता है)। यदि Http केवल ध्वज सेट नहीं है, या कुकी (क्लाइंट साइड) जावास्क्रिप्ट में बनाई गई है, तो कुकी को सर्वर क्लाइंट साइड में (क्लाइंट साइड) जावास्क्रिप्ट से पढ़ा और लिखा जा सकता है।
सभी कुकीज़ क्लाइंट और सर्वर हैं
इसमें कोई फर्क नही है। एक नियमित कुकी को सर्वर साइड या क्लाइंट साइड सेट किया जा सकता है। प्रत्येक अनुरोध के साथ 'क्लासिक' कुकी वापस भेजी जाएगी। एक कुकी जो सर्वर द्वारा सेट की गई है, ग्राहक को प्रतिक्रिया में भेजी जाएगी। सर्वर केवल कुकी भेजता है जब वह स्पष्ट रूप से सेट या परिवर्तित हो जाता है, जबकि क्लाइंट प्रत्येक अनुरोध पर कुकी भेजता है।
लेकिन अनिवार्य रूप से यह एक ही कुकी है।
लेकिन, व्यवहार बदल सकता है
एक कुकी मूल रूप से एक है name=value
जोड़ी है, लेकिन मूल्य के बाद हो सकता है सेमी-कोलन का एक समूह अलग विशेषताओं है कि कुकी के व्यवहार को प्रभावित करता है, तो यह बहुत ग्राहक (या सर्वर) द्वारा कार्यान्वित किया जाता। वे विशेषताएँ जीवनकाल, संदर्भ और विभिन्न सुरक्षा सेटिंग्स के बारे में हो सकती हैं।
केवल HTTP (केवल सर्वर नहीं है)
उन विशेषताओं में से एक को एक सर्वर द्वारा यह इंगित करने के लिए सेट किया जा सकता है कि यह केवल HTTP-कुकी है। इसका मतलब है कि कुकी को अभी भी आगे और पीछे भेजा जाता है, लेकिन यह जावास्क्रिप्ट में उपलब्ध नहीं होगा। हालांकि, ध्यान दें कि कुकी अभी भी है! यह केवल ब्राउज़र में सुरक्षा में बनाया गया है, लेकिन अगर कोई IE5, या कुछ कस्टम क्लाइंट जैसे हास्यास्पद पुराने ब्राउज़र का उपयोग करेगा, तो वे वास्तव में कुकी पढ़ सकते हैं!
तो ऐसा लगता है कि 'सर्वर कुकीज़' हैं, लेकिन वास्तव में नहीं हैं। वे कुकीज़ अभी भी क्लाइंट को भेजी जाती हैं। क्लाइंट पर कुकी को सर्वर पर भेजे जाने से रोकने का कोई तरीका नहीं है।
'केवल-नेस' प्राप्त करने के लिए विकल्प
यदि आप केवल सर्वर पर या केवल क्लाइंट पर कोई मान संग्रहीत करना चाहते हैं, तो आपको किसी अन्य प्रकार के संग्रहण की आवश्यकता होगी, जैसे सर्वर पर फ़ाइल या डेटाबेस या क्लाइंट पर स्थानीय संग्रहण।
document.cookie="foo=bar"
द्वारा पीछा किया fetch("/foobar", {credentials: 'include'} )
जा रहा है कोई कुकी युक्त नहीं भेजा जा रहा है foo=bar
। बस इस साइट पर सीधे DevTools और कंसोल का उपयोग करके कोड की कोशिश की।
हाँ, आप कुकीज़ बना सकते हैं जो केवल सर्वर-साइड पर पढ़ी जा सकती हैं। इन्हें "HTTP ओनली" -कुकीज कहा जाता है, जैसा कि पहले से ही अन्य उत्तरों में बताया गया है
नहीं, कोई रास्ता नहीं है (मुझे पता है) "कुकीज़" बनाने के लिए जिसे केवल क्लाइंट-साइड पर पढ़ा जा सकता है। कुकीज़ क्लाइंट-सर्वर संचार की सुविधा के लिए हैं।
लेकिन, अगर आप कुछ चाहते हैं "क्लाइंट-ओनली-कुकीज" तो एक आसान जवाब है: "लोकल स्टोरेज" का उपयोग करें।
स्थानीय संग्रहण वास्तव में कुकीज़ की तुलना में उपयोग करने के लिए सरल रूप से सरल है। कुकीज़ बनाम स्थानीय भंडारण का एक अच्छा सरल सारांश यहां पाया जा सकता है:
एक बिंदु: आप GUI से संबंधित चीजों को स्टोर करने के लिए जावास्क्रिप्ट में निर्मित कुकीज़ का उपयोग कर सकते हैं जो आपको केवल क्लाइंट-साइड पर चाहिए। लेकिन कुकी को भेजे गए अनुरोध के लिए सर्वर पर भेजा जाता है, यह http-request हेडर्स का हिस्सा बन जाता है, जिससे अनुरोध अधिक डेटा होता है और इस प्रकार भेजने के लिए धीमा हो जाता है।
यदि आपके पृष्ठ में चित्र और सीएसएस-फाइलें और स्क्रिप्ट जैसे 50 संसाधन हैं तो प्रत्येक अनुरोध के साथ कुकी (आमतौर पर) भेजी जाती है। इस पर अधिक क्या हर वेब अनुरोध ब्राउज़र कुकीज़ भेजता है?
स्थानीय भंडारण में उन डेटा-स्थानांतरण से संबंधित नुकसान नहीं होते हैं, यह कोई डेटा नहीं भेजता है। यह बहुत अच्छा है।