मेरे इस उत्तर को लिखने के समय, इस प्रश्न का स्वीकृत उत्तर यह प्रतीत होता है कि प्रतिस्थापन कुकी प्राप्त करते समय ब्राउज़र को कुकी को हटाने की आवश्यकता नहीं होती है जिसका Expires
मूल्य अतीत में है। वह दावा झूठा है। स्थापना Expires
अतीत में होना करने के लिए मानक, कल्पना अनुरूप एक कुकी को हटाने का तरीका है, और उपयोगकर्ता एजेंटों यह सम्मान करने के लिए कल्पना के लिए आवश्यक हैं।
Expires
कुकी को हटाने के लिए अतीत में एक विशेषता का उपयोग करना सही है और युक्ति द्वारा निर्धारित कुकीज़ को हटाने का तरीका है। RFC 6255 राज्यों का उदाहरण अनुभाग :
अंत में, कुकी को निकालने के लिए, सर्वर अतीत में समाप्ति तिथि के साथ सेट-कुकी शीर्षलेख लौटाता है। सर्वर कुकी को निकालने में तभी सफल होगा जब सेट-कुकी शीर्षलेख में पथ और डोमेन विशेषता कुकी के उपयोग के दौरान उपयोग किए गए मानों से मेल खाती हो।
उपयोगकर्ता एजेंट आवश्यकताओं अनुभाग निम्न आवश्यकताओं को, जो एक साथ प्रभाव है कि एक कुकी तुरंत मिटा दिया जाना चाहिए अगर उपयोगकर्ता एजेंट एक ही नाम जिसका समाप्ति तिथि अतीत में है के साथ एक नया कुकी प्राप्त करता है शामिल
अगर [नई कुकी प्राप्त करते समय] कुकी स्टोर में एक ही नाम, डोमेन, और पथ के साथ एक कुकी होती है, जैसा कि नई बनी कुकी:
- ...
- ...
- पुराने-कुकी के निर्माण-समय से मेल खाने के लिए नई बनाई गई कुकी के निर्माण-समय को अपडेट करें।
- कुकी स्टोर से पुराने-कुकी को हटा दें।
कुकी स्टोर में नई बनाई गई कुकी डालें।
यदि कुकी की अतीत में समाप्ति तिथि है, तो एक कुकी "समाप्त हो गई" है।
उपयोगकर्ता एजेंट को कुकी स्टोर से सभी समयसीमा समाप्त कुकीज़ को बाहर निकालना चाहिए, अगर किसी भी समय, कुकी स्टोर में एक समय सीमा समाप्त कुकी मौजूद है।
अंक 11-3, 11-4, और 12 एक साथ ऊपर का मतलब है कि जब एक नया कुकी एक ही नाम, डोमेन और पथ के साथ प्राप्त होता है, तो पुरानी कुकी को बाहर निकाला जाना चाहिए और नई कुकी के साथ प्रतिस्थापित किया जाना चाहिए। अंत में, एक्सपायर कुकीज़ के बारे में नीचे दी गई बात आगे बताती है कि ऐसा करने के बाद, नई कुकी को भी तुरंत निकाल देना चाहिए । कल्पना इस बिंदु पर ब्राउज़रों के लिए कोई wiggle कमरा प्रदान करती है; यदि कोई ब्राउज़र उपयोगकर्ता को कुकी समाप्ति को अक्षम करने का विकल्प देने की पेशकश करता है, जैसा कि स्वीकृत उत्तर कुछ ब्राउज़रों का सुझाव है, तो यह कल्पना का उल्लंघन होगा। (इस तरह की सुविधा का बहुत कम उपयोग होता है, और जहां तक मुझे पता है कि यह किसी भी ब्राउज़र में मौजूद नहीं है।)
फिर, इस प्रश्न के ओपी ने इस दृष्टिकोण को विफल क्यों माना? हालाँकि मैंने इसके व्यवहार की जाँच करने के लिए Internet Explorer की एक प्रति को नहीं हटाया है, मुझे संदेह है कि यह ओपी का Expires
मूल्य विकृत था! उन्होंने इस मूल्य का उपयोग किया:
expires=Thu, Jan 01 1970 00:00:00 UTC;
हालाँकि, यह दो तरीकों से वाक्यविन्यास रूप से अमान्य है।
युक्ति का सिंटैक्स अनुभाग यह निर्धारित करता है कि Expires
विशेषता का मान होना चाहिए
rfc1123 -date, जिसे [RFC2616], धारा 3.3.1 में परिभाषित किया गया है
ऊपर दिए गए दूसरे लिंक के बाद, हम इसे प्रारूप के उदाहरण के रूप में देखते हैं:
Sun, 06 Nov 1994 08:49:37 GMT
और पाते हैं कि वाक्य रचना परिभाषा ...
यह आवश्यक है कि तिथियां दिन के महीने के प्रारूप में लिखी जाएं , प्रश्न पूछने वाले द्वारा उपयोग किए गए महीने के प्रारूप के अनुसार नहीं ।
विशेष रूप से, यह rfc1123-date
निम्नानुसार परिभाषित करता है:
rfc1123-date = wkday "," SP date1 SP time SP "GMT"
और date1
इस तरह परिभाषित करता है:
date1 = 2DIGIT SP month SP 4DIGIT
; day month year (e.g., 02 Jun 1982)
तथा
UTC
एक समयक्षेत्र के रूप में अनुमति नहीं है ।
इस प्रारूप में क्या समय-सीमा ऑफसेट स्वीकार्य हैं, इस बारे में निम्नलिखित कथन शामिल हैं:
बिना किसी अपवाद के सभी HTTP दिनांक / समय टिकटों को ग्रीनविच मीन टाइम (GMT) में दर्शाया जाना चाहिए।
अगर हम इस डेटाटाइम प्रारूप की मूल कल्पना में गहराई से खुदाई करते हैं, तो हम https://tools.ietf.org/html/rfc822 में इसके प्रारंभिक नमूने में और अधिक खोज करते हैं, सिंटैक्स अनुभाग "UT" को सूचीबद्ध करता है (जिसका अर्थ है "सार्वभौमिक समय" ) एक संभव मूल्य के रूप में है, लेकिन करता है नहीं सूची नहीं यूटीसी (समन्वित यूनिवर्सल समय) वैध के रूप में। जहाँ तक मुझे पता है, इस तिथि प्रारूप में "UTC" का उपयोग करना कभी भी मान्य नहीं रहा है; 1982 में जब प्रारूप पहली बार निर्दिष्ट किया गया था, तो यह एक वैध मूल्य नहीं था, और HTTP युक्ति ने "GMT" के अलावा सभी "ज़ोन" मूल्यों के उपयोग पर प्रतिबंध लगाते हुए प्रारूप के कड़ाई से अधिक प्रतिबंधात्मक संस्करण को अपनाया है ।
सवाल यहाँ प्रश्नकर्ता बजाय एक का इस्तेमाल किया था, तो Expires
जैसे विशेषता यह है, तो:
expires=Thu, 01 Jan 1970 00:00:00 GMT;
तब यह संभवतः काम किया होगा।