删除cookie之js实现

删除cookie原理

Cookie并不提供修改、删除操作。如果要修改某个Cookie,只需要新建一个同名的Cookie来覆盖原来Cookie。


将maxAge设置为0,覆盖原来的Cookie属性值。注意是0而不是负数。负数代表其他的意义。


注意:只需判断cookie的name是否匹配就能验证cookie是否存在了。如果要更新cookie,除了设置相同的名字外,还要设置相同的域和path名,因为拿到的cookie只有name 和 value,如果不设置域和path值,则会默认当前路径和域,存另外一份Cookie。(而我们下面的解决办法中,因为本来setCookie没有设置域和path,所以更新时并不需要重新设置,都采用默认当前路径和域)

 

如何删除Cookie?

max-age:如果设置为负值的话,则为浏览器进程Cookie(内存中保存),关闭浏览器就失效;如果设置为0,则立即删除该Cookie。

expiress:设置为当前时间之前的时间,即可立即删除该cookie

 

那么如果有多个cookie呢?

cookie结构:cookie是以键值对的形式保存的,即key=value的格式。各个cookie之间一般是以“;”分隔。

我们用循环每个cookie设置expiress属性来删除(设置maxAge也可以):

// js 遍历所有Cookie
		function foreach()
		{
			var strCookie=document.cookie;
			var arrCookie=strCookie.split("; "); // 将多cookie切割为多个名/值对
			for(var i=0;i <arrCookie.length;i++)
			{ // 遍历cookie数组,处理每个cookie对
				var arr=arrCookie[i].split("=");
				if(arr.length>0)
				DelCookie(arr[0]);	
			}
		}
		
		function GetCooki(offset)	 
		{
			var endstr = document.cookie.indexOf (";", offset);
			if (endstr == -1)
			endstr = document.cookie.length;
			return decodeURIComponent(document.cookie.substring(offset, endstr));
		}
		
		function DelCookie(name)
		{
			var exp = new Date();
			exp.setTime (exp.getTime() - 1);
			var cval = GetCookie (name);
			document.cookie = name + "=" + cval + "; expires="+ exp.toGMTString();
		}

		function GetCookie(name)
		{
			var arg = name + "=";
			var alen = arg.length;
			var clen = document.cookie.length;
			var i = 0;
			while (i < clen)
			{
				var j = i + alen;
				if (document.cookie.substring(i, j) == arg)
				return GetCooki (j);
				i = document.cookie.indexOf(" ", i) + 1;
				if (i == 0) break;
			}
			return null;
		}
		foreach();

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值