首页 文章

如何删除cookie?

提问于
浏览
255

我创建cookie的功能是否正确?如何在程序开头删除cookie?有简单的编码吗?

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);
}

7 回答

  • 11

    这是一个delete cookie函数的实现,具有Mozilla的unicode支持:

    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(在其下方使用类似的approach):

    $cookies.remove('cookieName');
    
  • 8

    试试这个:

    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;';
    }
    
  • 23

    这里有一个关于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;';  
    }
    
  • 14

    这会有用吗?

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

    我知道 Max-Age 会在创建cookie时使cookie成为IE中的会话cookie . 删除cookie时不确定它是如何工作的 .

  • 88

    您可以通过将到期日期设置为昨天来完成此操作 .

    将其设置为“-1”不起作用 . 这标志着一个cookie作为Sessioncookie .

  • 290

    要删除cookie,我再次使用空值设置它并在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");
    
  • 2

    我在删除通过JavaScript制作的cookie时遇到了问题,并且在我添加了它工作的主机之后(将右下方的代码滚动到右侧以查看 location.host ) . 清除域上的cookie后,请尝试以下操作以查看结果:

    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);}
     }
    }
    

相关问题