कोई समाप्ति तिथि के साथ जावास्क्रिप्ट कुकी


143

मैं एक कुकी स्थापित करना चाहूंगा जो कभी समाप्त न हो। क्या यह भी संभव होगा?

 document.cookie = "name=value; expires=date; path=path;domain=domain; secure";

मैं तारीख को वास्तव में बड़ा नहीं करना चाहता, मैं बस सोच रहा था कि क्या कुकी पर एक्सपायर पैरामीटर का कोई मूल्य था जो इसे कभी भी समाप्त नहीं होने के लिए कहा था।

धन्यवाद।


1
आप तारीख को बड़ा क्यों नहीं करना चाहते?
एंथनीवजोन

13
तारीख को बड़ा करने से मुझे ऐसा लगता है जैसे मैं धोखा दे रहा हूं। अगर यह एकमात्र रास्ता है, तो मुझे लगता है कि मुझे तारीख को बड़ा करना होगा।
जोस वेगा

जवाबों:


170

नहीं। नहीं किया जा सकता है। ऐसा करने का 'तरीका' सिर्फ समाप्ति की तारीख 2030 जैसा है।


31
अभी और चार साल होने को हैं। आशा है कि आपने कुकी को अपडेट कर दिया है।
antony.ouseph.k

160
2020 - cookiepocalypse के वर्ष
JeffreyPia

14
अरे, यह हर साल करीब हो रहा है, मुझे उम्मीद है कि आपका कोड अपडेट हो गया है।
kartsims

22
यह अब 2030 तक संपादित हो गया है, हम अपने कयामत को 10 और वर्ष स्थगित कर रहे हैं
शिमोन नाकोव

7
इसलिए, मूल रूप से, 19 जनवरी 2038 को, चेवी मिलेनियम फाल्कन में बैठेंगे और गांगेय मानचित्र एपीआई पर फिर से कुकी नीति पॉपअप के बारे में शिकायत करेंगे ...
निकर

108

आप जो चाहते हैं उसके लिए कोई सिंटैक्स नहीं है। समय सीमा समाप्त नहीं होने से सत्र के अंत में कुकी समाप्त हो जाती है। एकमात्र विकल्प कुछ मनमाने ढंग से बड़े मूल्य को चुनना है। विदित हो कि कुछ ब्राउज़रों को दिनांक २०३ that (जब यूनिक्स की अवधि ३२-बिट इंट से अधिक है) के साथ समस्या है।


25
2038-01-19, 03:14:08 यूटीसी, सटीक होना।
विल्हेम क्लॉप

बस स्पष्ट करने के लिए: यह एक नियम है, हर ब्राउज़र में उसी तरह काम कर रहा है? इसका अर्थ है कि यदि मैं समय सीमा समाप्त नहीं करता, तो कुकी केवल सत्र के अंत तक चलेगी।
सिल्वर रिंगवी

2
एक Expiresया Max-Ageनिर्देश के बिना बनाई गई कुकी एक सत्र कुकी है: क्लाइंट के शट डाउन होने पर इसे हटा दिया जाता है। हालाँकि, वेब ब्राउज़र सत्र बहाली का उपयोग कर सकते हैं , जो अधिकांश सत्र कुकीज़ को स्थायी बनाता है, जैसे कि ब्राउज़र कभी बंद नहीं हुआ था। ( स्रोत:
एमडीएन

67

आप मोज़िला डॉक्स पर उदाहरण के रूप में कर सकते हैं :

 document.cookie = "someCookieName=true; expires=Fri, 31 Dec 9999 23:59:59 GMT";

पुनश्च

बेशक, एक मुद्दा होगा अगर मानवता अभी भी वर्ष 10000 के पहले मिनट में आपके कोड का उपयोग करती है :)


89
क्या आपको यकीन है कि इसका शुक्रवार है?
डेविड


5
Npmjs.com/package/universal-cookie का उपयोग करके मेरे लिए काम नहीं किया । वर्ष 2038 समाधान के साथ चला गया । मैंने 2030 में वापस आने के लिए एक टिकट लिखा, यह देखने के लिए कि क्या कोई फिक्स है।
हेनरिक

15

कुकी विनिर्देश के अनुसार सभी कुकीज़ समाप्त हो जाती हैं , अधिकतम मूल्य जो आप निर्धारित कर सकते हैं

 2^31 - 1 = 2147483647 = 2038-01-19 04:14:07

तो अधिकतम कुकी जीवन का समय है

$.cookie('subscripted_24', true, { expires: 2147483647 });

7
वह संख्या मेरे लिए काम नहीं करती थी। परीक्षण और त्रुटि के एक बिट के बाद, सबसे अधिक संख्या मैं उपयोग करने में सक्षम था 99983090 (एक्सपायर = शुक्र, 12 सितंबर 275760 18:10:24 जीएमटी)। उच्चतर कुछ भी "अमान्य दिनांक" लौटा
जेफरीपिया

यदि आप jquery-कुकी या js-कुकी के लिए पैरामीटर को समाप्त करने के रूप में एक संख्या पास करते हैं, तो अब समाप्त होने में दिनों के रूप में लिया जाता है। यदि आप एक निश्चित तारीख चाहते हैं तो आपको इसके बजाय डेट ऑब्जेक्ट पास करना होगा।
डारियो सेडल

उपरोक्त कोड का उपयोग करता है jQuery-कुकी जो के पक्ष में समाप्त हो चुकी है प्लगइन js-कुकी
जेन्स

2
वेनिला जेएस के लिए:document.cookie = 'subscripted_24=true; expires=' + new Date(2147483647 * 1000).toUTCString();
ओक्साना रोमनिव

12

आप संभवतः एक महीने या कुछ की समाप्ति तिथि पर एक कुकी सेट कर सकते हैं और उपयोगकर्ता द्वारा वेबसाइट पर फिर से आने पर हर बार कुकी को फिर से असाइन करें।


1
यह अंतहीन कुकीज़ सेट करने का सही उत्तर है। और अगर आपको यह ध्यान रखना है कि उपयोगकर्ता साइट को कभी बंद नहीं करता है, तो आप किसी भी कार्रवाई के बाद या एक निश्चित समय के बाद कुकीज़ को अपडेट करने के लिए एक अतिरिक्त शर्त लागू कर सकते हैं।
एलेक्स शिंक

9

यदि आप एक समाप्ति तिथि निर्धारित नहीं करते हैं तो कुकी उपयोगकर्ता के सत्र के अंत में समाप्त हो जाएगी। मैं यूनिक्स युग से पहले सही तारीख का उपयोग करने की सलाह देता हूं जो 32-बिट पूर्णांक को पारित करेगा। उस कुकी में रखने के लिए जो आप उपयोग कर रहे हैं document.cookie = "randomCookie=true; expires=Tue, 19 Jan 2038 03:14:07 UTC;, यह मानते हुए कि randomCookieआप जो कुकी सेट कर रहे हैं और trueवह संबंधित मूल्य है।


2

आप बस नहीं कर सकते । हमेशा के लिए कुकी सेट करने के लिए उपयोग करने के लिए कोई सटीक कोड नहीं है, लेकिन एक पुरानी चाल होगी, जैसे current time + 10 years

बस ध्यान दें कि आगे की कोई भी तारीख January 2038आपको कुकीज़ ( 32-बिट इंट) के लिए बर्बाद कर देगी ) तुरंत हटा दी जाएगी। एक चमत्कार की कामना करते हैं जो निकट भविष्य में तय हो जाएगा। के लिए 64-बिट पूर्णांक , वर्ष के आसपास 2110सुरक्षित हो जाएगा। जैसे-जैसे समय बीतता जाएगा, सॉफ्टवेयर और हार्डवेयर बदल जाएंगे और कभी भी पुराने वाले (अब हमारे पास मौजूद चीजें) के अनुकूल नहीं होंगे, इसलिए भविष्य के लिए अभी से तैयारी करें ।

देख वर्ष 2038 की समस्या


3
मुझे लगता है कि आपको इस बात का एहसास नहीं है कि भविष्य में 64 बिट कंप्यूटर की गिनती कितनी दूर हो सकती है , अर्थात् 292 बिलियन वर्ष
Gust van de Wal

@GustvandeWal तो हाँ? मैंने पहले ही पढ़ लिया है। मैंने अपने उत्तर में उस लिंक को भी शामिल किया।
रविन्दक

1
आपके उत्तर से: 64-बिट इंट के लिए , 2110 के आसपास के वर्ष सुरक्षित होंगे। यह संदिग्ध रूप से बहुत लगता है जैसे कि आप 64-बिट कंप्यूटरों को 32-बिट कंप्यूटरों के रूप में दो बार गिनने की उम्मीद करते हैं (1970 -> 2035 -> 2110)
Gust van de Wal

@GustvandeWal क्षमा करें यदि मेरे शब्द संदिग्ध लगे। शायद यह अंग्रेजी में कहने का सबसे अच्छा तरीका नहीं है। लेकिन हे, मुझे उम्मीद नहीं थी या आपको लगता है कि इस तरह का विचार आपने अभी कहा है।
ravendc

4
एक छोटा नोट: यदि हम 33-बिट प्रोसेसर का उपयोग कर रहे हैं, तो वर्ष 2110 समझ में आएगा।
हेजेज

1

यदि आप ग्राहक-पक्ष से केवल डेटा पढ़ने का इरादा रखते हैं, तो आप स्थानीय भंडारण का उपयोग कर सकते हैं। यह केवल तभी हटाया जाता है जब ब्राउज़र का कैश साफ़ हो जाता है।


या ब्राउज़र बंद हो गया है या कंप्यूटर बंद हो गया है
Redwolf प्रोग्राम्स

@RedwolfPrograms जब ब्राउज़र बंद हो जाता है या कंप्यूटर बंद हो जाता है तो स्थानीय संग्रहण कब से साफ़ हो जाता है?
इगोर जेरोसमिक

@ इगोरजेरोसिमीओक ओप्स! मुझे लगता है कि मुझे लगा कि मेरी साइट में एक बग की वजह से ...
Redwolf प्रोग्राम्स

-2

आप एक कुकी को कभी भी समाप्त नहीं कर सकते जो इसे चालू वर्ष की तुलना में जो भी तारीख और एक से अधिक हो, उस पर सेट करके:

var d = new Date();    
document.cookie = "username=John Doe; expires=Thu, 18 Dec " + (d.getFullYear() + 1) + " 12:00:00 UTC";

1
यह एक साल के बाद समाप्त हो जाएगा, अनिश्चित काल तक (AFAIK) नहीं।
सोलोमन उको
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.