JS 无法清除Cookie的解决方法

项目中使用sdmenu.js时,需要在登录时清除Cookie,而sdmenu默认是会保存Cookie的

 下面是sdmenu.js保存Cookie的方法

document.cookie = "sdmenu_" + encodeURIComponent(this.menu.id) + "=" + states.join("") + "; expires=" + d.toGMTString() + "; path=/";

 

下面是我到网上找的清除Cookie的方法,始终都无法删除Cookie

  1、传递Cookie名称

function deleteCookie(name){
          var date=new Date();
          date.setTime(date.getTime()-10000);
          document.cookie=name+"=v; expire="+date.toGMTString()+"; path=/";

2、循环删除所有Cookie

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

 

后来发现这个网址,介绍了无法删除Cookie的原因

http://php.js.cn/blog/delete-cookie/

 今天遇到一个cookie的问题: 名叫username的,域为www.umiwi.com的cookie无法删除,导致用户登录以后无法退出。搞了半天终于发现问题所在:原来是我关于cookie的基础知识没搞清楚 。。。。

    Cookie不仅仅有名字和值两个属性,还有域(domain),过期时间(expires),路径(path)等属性。 其中,不同的域、不同的路径下可以存在同样名字的cookie。 比如这个页面:  用鼠标戳我

    一般我们删除cookie的方法是用一个同样名字、过期时间为过去某个时候的Cookie覆盖之。 这时就一定要搞清楚你要删除的cookie的域和路径,Cookie域和路径要一样才能被覆盖。 否则产生的效果就是那个想要被删除的Cookie具有神奇的生命力,无法被清除~~~

    另外,我发现在设置Cookie的时候,如果没有指定域名,那么设置的这个cookie的域默认为当前域,比如www.umiwi.com。 如果设置的时候指定了某个域,那么浏览器存的时候会自动在前面加.。比如PHP代码: setcookie('test','a',0,'www.umiwi.com');  那么 浏览器里面存的Cookie的域为.www.umiwi.com所以,最好的方式是设置Cookie的时候怎么写的,删除的时候就怎么写。  要不就会出现我遇到的情况: 明明浏览器里看有 username=longbill,域为www.umiwi.com的Cookie,但是在php里写 setcookie('username','',time()-1000,'www.umiwi.com','/'); 无法删除那个Cookie。 原因就是我删Cookie的操作其实上是发了一个新的名叫username、值为空、过期时间为过去1000秒、域为.www.umiwi.com、路径为/的Cookie。这个Cookie发到浏览器马上就过期了,什么也看不到。而我要删除的在http://www.umiwi.com/上的cookie还活的好好的。。。

 

 

 

原来是删除Cookie的代码中没有加 路径(path)

原:

document.cookie = "sdmenu_" + encodeURIComponent(this.menu.id) + "=" + states.join("") + "; expires=" + d.toGMTString() + "; path=/";

新:

         var date=new Date();
          date.setTime(date.getTime()-10000);
          document.cookie=name+"=v; expire="+date.toGMTString()+"; path=/";

除了路径(path),可能还有域等其它情况,保险的方式就是 设置Cookie时是什么样式,删除时就应该是什么样式,加上expire属性就行了

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/303048.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

9张图,Kafka为什么要放弃Zookeeper

最近&#xff0c;confluent社区发表了一篇文章&#xff0c;主要讲述了Kafka未来的2.8版本将要放弃Zookeeper&#xff0c;这对于Kafka用户来说&#xff0c;是一个重要的改进。之前部署Kafka就必须得部署Zookeeper&#xff0c;而之后就只要单独部署Kafka就行了。[1]1.Kafka简介Ap…

Python能用来做什么?以下是Python的三大主要用途

如果你想学Python&#xff0c;或者你刚开始学习Python&#xff0c;那么你可能会问&#xff1a;“我能用Python做什么&#xff1f;”这个问题不好回答&#xff0c;因为Python有很多用途。但是随着时间&#xff0c;我发现有Python主要有以下三大主要应用&#xff1a; Web开发 数据…

qbuttongroup如何都不选中_全程马拉松,半程马拉松该如何跑?很多人都不知道这些细节...

现在已经到12月份了&#xff0c;全国各地的马拉松也接近尾声&#xff0c;回想自己这一年参加了多少次全程马拉松或半程马拉松&#xff1f;很多人跑步最初的宗旨是为了减肥、为了健康&#xff0c;为了让自己拥有一个好身体&#xff0c;可是不知不觉中在朋友又或自己的兴趣中“投…

通过Dapr实现一个简单的基于.net的微服务电商系统(五)——一步一步教你如何撸Dapr之状态管理...

状态管理和上一章的订阅发布都算是Dapr相较于其他服务网格框架来讲提供的比较特异性的内容&#xff0c;今天我们来讲讲状态管理。目录&#xff1a;一、通过Dapr实现一个简单的基于.net的微服务电商系统二、通过Dapr实现一个简单的基于.net的微服务电商系统(二)——通讯框架讲解…

过Div将页面分三块(上,中,下),然后通过Ext来改变Content的内容(三)--终结版

2019独角兽企业重金招聘Python工程师标准>>> 这几天的页面重构终于快要结束了。 最终页面架构选择了Sitemesh&#xff0c;经过昨天下午及今天上午的调试终于把Sitemesh下css、js问题解决了。 使用Sitemesh总结以下几点&#xff1a; 1、<decorator:head />放在…

Python+人工智能的超强组合,再不学就跟不上时代啦!

《Python人工智能》原价 899.00 现超 410 人参团仅售 199.00 点击文末阅读原文立即参团参团&#xff0c;咨询&#xff0c;查看课程&#xff0c;请点击【阅读原文】↓↓↓

如何证明服从卡方分布_谈谈抽样分布定理

各位阿娜答&#xff0c;这个月就更新了一篇文章&#xff0c;这都月底了&#xff0c;还有两次自荐机会没用&#xff0c;所以最后这几天要更两篇文章&#xff0c;大家敬请期待&#xff01;明明是夏天&#xff0c;但却是个多事之秋啊~(ง •_•)ง2020年注定是不平凡的一年&#x…

C#中ManualResetEvent用法简介

简单介绍多个线程可以通过调用ManualResetEvent对象的WaitOne方法进入等待或阻塞状态。当控制线程调用Set()方法&#xff0c;所有等待线程将恢复并继续执行。ManualResetEvent是如何工作的在内存中保持着一个bool值&#xff0c;如果bool值为False&#xff0c;则使所有线程阻塞&…

anaconda和python有什么不一样_黄山毛峰的味道为什么会不一样?

黄山毛峰&#xff0c;最早为人所熟知的黄山名茶&#xff0c;最经典的绿茶&#xff0c;特别是那种清香清爽的味道&#xff0c;很受茶友的喜爱。这两年经常接到茶友的电话问&#xff0c;为什么之次每次买的黄山毛峰都不一样&#xff0c;在不同的茶叶店&#xff0c;买的味道都不一…

Newbe.Claptrap 0.10.2 发布,Blazor 演示

Newbe.Claptrap 0.10.2 发布&#xff0c;我们为项目模板引入了 Minion 以及 Blazor 制作的交互界面。更新内容 类库常规升级升级了相关的所有类库至最新版本。包括 Dapr SDK 1.1 等等。项目模板增强现在&#xff0c;我们为最新的项目模板引入了 Minion 以演示如何使用 Minion 处…

Linux资料分享,强势来袭!

小编从大学开始&#xff0c;便开启资料收集功能。随着大数据时代的来临&#xff0c;计算机发展进入新的阶段&#xff0c;再加上日常的深入研究&#xff0c;小编收集整理了丰富的Linux资料&#xff0c;内容涵盖“集群类”&#xff0c;“监控类”、“编程类”“系统类”等。这次小…

cocoaChina中整理的知识点-对文件重新命名-利于查阅

是cocoaChina网站上下载的知识点整理&#xff0c;共669个知识点&#xff0c;我花了点时间给文件全部做了重命名&#xff0c;这样用来查阅或者选择性的学习会有些帮助。 文件放在115网盘&#xff0c;下载地址&#xff1a;http://115.com/file/bhkqjlx2#cocoaChina整理知识点.rar…

es6 ie不兼容 函数_ES6:什么是块级作用域?

在 ES5 只有全局作用域和函数作用域&#xff0c;没有块级作用域&#xff0c;这带来很多不合理的场景。我们先来看一下下面这种情况&#xff1a;内层变量可能会覆盖外层变量。var txt 外层变量-->你好呀;function fn() {console.log(txt);if (false) {var txt 内层变量--&g…

一个简单的规则引擎例子

本例使用的规则引擎包是RulesEngine&#xff0c;关于RulesEngine的介绍&#xff0c;请自行补充&#xff0c;这里只是一个极简单使用场景。例子大体就是用户有一些优惠券&#xff0c;系统会根据用户订单情况&#xff0c;筛选可以使用的优惠券供用户选择&#xff0c;用户选择后会…

程序员面试必备的20条Python经典面试题

1、Python如何实现单例模式&#xff1f;Python有两种方式可以实现单例模式&#xff0c;下面两个例子使用了不同的方式实现单例模式&#xff1a;1.class Singleton(type):def __init__(cls, name, bases, dict):super(Singleton, cls).__init__(name, bases, dict)cls.instance …

Active Directory系列之十七:实战详解域信任关系

实战详解域信任关系上篇博文中我们对域信任关系作了一下概述&#xff0c;本文中我们将通过一个实例为大家介绍如何创建域信任关系。拓扑如下图所示&#xff0c;当前网络中有两个域&#xff0c;一个域是ITET.COM&#xff0c;另一个域是HOMEWAY.COM。两个域内各有一个域控制器&am…

vim 寄存器 操作_vim指令

vim 是一个基于【动词】 【名词】 建立的语法表。Vim 中常用的名词方位名词表基于字符的移动&#xff1a;h&#xff1a;左j&#xff1a;下k&#xff1a;上l&#xff1a;右 ^ | k 提示&#xff1a; h 的键位于左边&#xff0c;每次按下就会向…

NET问答: 如何记录 EntityFramework 中的所有 SQL 日志 ?

咨询区 PC.&#xff1a;我正在 MVC5 项目中使用 EF 6.0&#xff0c;为了方便调试和获取性能指标&#xff0c;我想记录 EF6 中的所有 sql 日志。在 Java/Hibernate 中&#xff0c;我只需要设置 hibernate.show_sqltrue 就可以了&#xff0c;不知道在 EF 中该如何设置等价操作呢…

35岁老程序员因身体原因没加班,老板:不想干就滚蛋

近日&#xff0c;某论坛上一名 35 岁老程序员说出了他最近的遭遇&#xff0c;高强度的工作本来就让他感觉越来越劳累&#xff0c;加上又在医院做了一个小手术&#xff0c;于是就按照公司的正常上下班时间下了班&#xff0c;但是领导却说了一句让他难以接受的话&#xff0c;都三…

centos linux 禁止ping

sysctl -w net.ipv4.icmp_echo_ignore_all1sysctl -p转载于:https://blog.51cto.com/guailele/740298