当前位置:   article > 正文

删除cookie之js实现_过时删除cookie js

过时删除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也可以):

  1. // js 遍历所有Cookie
  2. function foreach()
  3. {
  4. var strCookie=document.cookie;
  5. var arrCookie=strCookie.split("; "); // 将多cookie切割为多个名/值对
  6. for(var i=0;i <arrCookie.length;i++)
  7. { // 遍历cookie数组,处理每个cookie对
  8. var arr=arrCookie[i].split("=");
  9. if(arr.length>0)
  10. DelCookie(arr[0]);
  11. }
  12. }
  13. function GetCooki(offset)
  14. {
  15. var endstr = document.cookie.indexOf (";", offset);
  16. if (endstr == -1)
  17. endstr = document.cookie.length;
  18. return decodeURIComponent(document.cookie.substring(offset, endstr));
  19. }
  20. function DelCookie(name)
  21. {
  22. var exp = new Date();
  23. exp.setTime (exp.getTime() - 1);
  24. var cval = GetCookie (name);
  25. document.cookie = name + "=" + cval + "; expires="+ exp.toGMTString();
  26. }
  27. function GetCookie(name)
  28. {
  29. var arg = name + "=";
  30. var alen = arg.length;
  31. var clen = document.cookie.length;
  32. var i = 0;
  33. while (i < clen)
  34. {
  35. var j = i + alen;
  36. if (document.cookie.substring(i, j) == arg)
  37. return GetCooki (j);
  38. i = document.cookie.indexOf(" ", i) + 1;
  39. if (i == 0) break;
  40. }
  41. return null;
  42. }
  43. foreach();

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/149763
推荐阅读
相关标签
  

闽ICP备14008679号