कुकी कैसे हटाएं?


338

क्या कुकी बनाने का मेरा कार्य सही है? मैं अपने कार्यक्रम की शुरुआत में कुकी को कैसे हटाऊं? क्या कोई साधारण कोडिंग है?

function createCookie(name,value,days)
function setCookie(c_name,value,1) {
  document.cookie = c_name + "=" +escape(value);
}

setCookie('cookie_name',mac);

function eraseCookie(c_name) {
  createCookie(cookie_name,"",-1);
}

1
w3schools में w3schools.com/js/js_cookies.asp पर कुकीज़ के अच्छे कार्य हैं । आप setCookie('name', 'value', 0)एक कुकी को हटाने के लिए उपयोग कर सकते हैं ।
पीट

जवाबों:


341

इसे इस्तेमाल करे:

function delete_cookie( name, path, domain ) {
  if( get_cookie( name ) ) {
    document.cookie = name + "=" +
      ((path) ? ";path="+path:"")+
      ((domain)?";domain="+domain:"") +
      ";expires=Thu, 01 Jan 1970 00:00:01 GMT";
  }
}

या:

function delete_cookie( name ) {
  document.cookie = name + '=; expires=Thu, 01 Jan 1970 00:00:01 GMT;';
}

आप get_cookie()इस तरह परिभाषित कर सकते हैं :

function get_cookie(name){
    return document.cookie.split(';').some(c => {
        return c.trim().startsWith(name + '=');
    });
}

2
मैं एक फ़ंक्शन कैसे सेट करूं और यह जांच करूं कि मेरी कुकी क्या है और क्या यह अभी समाप्त हो रही है?
केनेडी

61
get_cookie परिभाषित नहीं है
क्रेकर

9
फ़ंक्शन का दूसरा संस्करण अब काम नहीं करता है jsfiddle jsfiddle.net/b27Lgxgf/1 देखें । @Luca के anwser में दृष्टिकोण से काम करता है
Tasos लालकृष्ण

6
यह कैसे काम करना है? जावास्क्रिप्ट में अंतर्निहित get_cookie()फ़ंक्शन नहीं है।
मिकेल पेरोलाकोव्स्की

4
@ MichałPerłakowski मुझे पूरा यकीन है कि यह केवल एक वास्तविक उद्देश्य के लिए एक प्लेसहोल्डर / संदर्भ होने के लिए था जिसे आप कहीं और परिभाषित करेंगे।
JSeligsohn

114

यहाँ Quirksmode पर एक अच्छा लिंक है

function setCookie(name,value,days) {
    var expires = "";
    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days*24*60*60*1000));
        expires = "; expires=" + date.toUTCString();
    }
    document.cookie = name + "=" + (value || "")  + expires + "; path=/";
}
function getCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}
function eraseCookie(name) {   
    document.cookie = name+'=; Max-Age=-99999999;';  
}

20
ध्यान दें: toGMTString toUTCString
drzaus के

4
नोट: काम नहीं करने की स्थिति में, सुनिश्चित करें pathकि सही है। देखें: developers.google.com/web/tools/chrome-devtools/manage-data/...
गायन Weerakutti

डोमेन जोड़ा जाना चाहिए।
माइकल कपुस्टी

3
यह भी ध्यान देने योग्य है कि पथ और डोमेन दोनों को सही मान रखने की आवश्यकता है।
एस्को 14

परीक्षण किया गया, पेज लोड होने से पहले, WKWebView में भी पूरी तरह से काम करता है। समाधान पर अच्छा काम।
पाशाण

31

क्या यह काम करेगा?

function eraseCookie(name) {
    document.cookie = name + '=; Max-Age=0'
}

मुझे पता Max-Ageहै कि कुकी बनाते समय IE में एक सत्र कुकी होने का कारण कुकी है। यह सुनिश्चित नहीं है कि कुकीज़ को हटाने के दौरान यह कैसे काम करता है।


17

यहां मोज़िला के यूनिकोड समर्थन के साथ एक डिलीट कुकी फ़ंक्शन का कार्यान्वयन है :

function removeItem(sKey, sPath, sDomain) {
    document.cookie = encodeURIComponent(sKey) + 
                  "=; expires=Thu, 01 Jan 1970 00:00:00 GMT" + 
                  (sDomain ? "; domain=" + sDomain : "") + 
                  (sPath ? "; path=" + sPath : "");
}

removeItem("cookieName");

यदि आप AngularJs का उपयोग करते हैं, तो $ कुकीज़ की कोशिश करें नीचे (नीचे एक समान दृष्टिकोण का उपयोग करता है ):

$cookies.remove('cookieName');

17

आप इसे समाप्ति की तारीख को कल पर सेट करके कर सकते हैं।

इसे "-1" पर सेट करना काम नहीं करता है। जो कि एक कुकी को एक सेन्सक्यूकी के रूप में चिह्नित करता है।


यदि आप कुकी को किसी अन्य पृष्ठ पर सेट करते हैं और इसे किसी भिन्न पृष्ठ से हटाने का प्रयास करते हैं तो आपका उदाहरण काम नहीं करता है। सेट काम करता है, लेकिन इसे हटा नहीं सकता।
चोवी

2
मैंने इसका उपयोग करना समाप्त कर दिया: github.com/carhartl/jquery-cookie और आपको पथ का उपयोग करके हटाना होगा: '/'
chovy

यह एक अच्छा तरीका है सिवाय इसके ... बस एक्सपायरी का समय शून्य पर सेट करें। यह त्वरित समाप्ति का कारण बनेगा, और किसी को भ्रमित नहीं करेगा ("डेवलपर ने कल समाप्ति समय क्यों निर्धारित किया था? क्या यह एक गलती थी, क्या वे एक दिन का जीवन काल चाहते थे?")। कोड लिखें, ताकि यह अधिक समझ में आए, और आपका जीवन रेखा के नीचे कम भ्रमित हो जाएगा। यह आजकल कोडिंग में एक अघोषित दर्शन है ... यहां तक ​​कि एमडीएन एक कुकी को हटाने के लिए समाप्ति समय शून्य करने का सुझाव देता है।
दुवेदाद

10

कुकी को हटाने के लिए मैंने इसे एक खाली मान के साथ फिर से सेट किया और 1 सेकंड में समाप्त कर दिया। विवरण में, मैं हमेशा निम्न फ्लेवर में से एक का उपयोग करता हूं (मैं दूसरे को पसंद करता हूं):

1।

    function setCookie(key, value, expireDays, expireHours, expireMinutes, expireSeconds) {
        var expireDate = new Date();
        if (expireDays) {
            expireDate.setDate(expireDate.getDate() + expireDays);
        }
        if (expireHours) {
            expireDate.setHours(expireDate.getHours() + expireHours);
        }
        if (expireMinutes) {
            expireDate.setMinutes(expireDate.getMinutes() + expireMinutes);
        }
        if (expireSeconds) {
            expireDate.setSeconds(expireDate.getSeconds() + expireSeconds);
        }
        document.cookie = key +"="+ escape(value) +
            ";domain="+ window.location.hostname +
            ";path=/"+
            ";expires="+expireDate.toUTCString();
    }

    function deleteCookie(name) {
        setCookie(name, "", null , null , null, 1);
    }

उपयोग:

setCookie("reminder", "buyCoffee", null, null, 20);
deleteCookie("reminder");

2

    function setCookie(params) {
        var name            = params.name,
            value           = params.value,
            expireDays      = params.days,
            expireHours     = params.hours,
            expireMinutes   = params.minutes,
            expireSeconds   = params.seconds;

        var expireDate = new Date();
        if (expireDays) {
            expireDate.setDate(expireDate.getDate() + expireDays);
        }
        if (expireHours) {
            expireDate.setHours(expireDate.getHours() + expireHours);
        }
        if (expireMinutes) {
            expireDate.setMinutes(expireDate.getMinutes() + expireMinutes);
        }
        if (expireSeconds) {
            expireDate.setSeconds(expireDate.getSeconds() + expireSeconds);
        }

        document.cookie = name +"="+ escape(value) +
            ";domain="+ window.location.hostname +
            ";path=/"+
            ";expires="+expireDate.toUTCString();
    }

    function deleteCookie(name) {
        setCookie({name: name, value: "", seconds: 1});
    }

उपयोग:

setCookie({name: "reminder", value: "buyCoffee", minutes: 20});
deleteCookie("reminder");

8

यदि आपने मैन्युअल रूप से कुकी बनाई है तो कुछ अन्य समाधान काम नहीं कर सकते हैं।

यहां कुकी को हटाने का एक त्वरित तरीका है:

document.cookie = 'COOKIE_NAME=; Max-Age=0; path=/; domain=' + location.host;

6

मुझे जावास्क्रिप्ट के माध्यम से बनाई गई कुकी को हटाने में परेशानी हुई और मैंने इसे होस्ट करने के बाद काम किया (देखने के लिए दाईं ओर नीचे दिए गए कोड को स्क्रॉल करें location.host)। एक डोमेन पर कुकीज़ साफ़ करने के बाद परिणाम देखने के लिए निम्नलिखित प्रयास करें:

if (document.cookie.length==0)
{
 document.cookie = 'name=example; expires='+new Date((new Date()).valueOf()+1000*60*60*24*15)+'; path=/; domain='+location.host;

 if (document.cookie.length==0) {alert('Cookies disabled');}
 else
 {
  document.cookie = 'name=example; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/; domain='+location.host;

  if (document.cookie.length==0) {alert('Created AND deleted cookie successfully.');}
  else {alert('document.cookies.length = '+document.cookies.length);}
 }
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.