`

JS 无法清除Cookie的解决方法

 
阅读更多

原文:http://www.cnblogs.com/gossip/archive/2011/12/06/2278282.html
项目中使用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属性就行了
分享到:
评论

相关推荐

    jquery 设置cookie、删除cookie、获取cookie

    - **域名和路径的一致性**:在设置或删除 Cookie 时,务必保证域名和路径与设置时一致,否则可能会导致无法正确读取或删除。 - **Cookie 的安全性**:在涉及到敏感数据时,考虑使用 HTTPS 协议并为 Cookie 添加 `...

    cookiejs一个用于处理浏览器cookie的简单轻量级JavaScriptAPI

    3. **删除Cookie**: 要删除一个cookie,可以使用`cookie.remove(name, [options])`。这会设置cookie的过期日期为过去,从而导致浏览器将其删除。`options`参数可以用来指定路径和域,确保只删除特定路径或域下的...

    jquery.cookie.js 存取cookie例子

    删除Cookie需要用到`$.removeCookie()`方法,同样需要传入Cookie的名称。此外,如果Cookie有特定的路径或域,为了确保完全删除,也需要提供相同的路径和域参数。 ```javascript $.removeCookie('username'); ``` *...

    FlashCookie 不被浏览器清除的Cookie

    为了解决这个问题,Flash开发者引入了FlashCookie,它们可以存储比普通Cookie更大容量的数据(高达100KB),并且更难以被用户发现和删除。 FlashCookie的工作原理是,当用户访问使用Flash技术的网站时,该网站可以...

    IIS环境下和阿帕奇环境下 js的Cookie使用方法

    要删除Cookie,只需设置其过期时间为过去的时间: ```javascript function deleteCookie(name) { document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/"; } ``` **三、Apache环境下...

    JS添加Cookie的例子

    在本文中,我们将深入探讨如何使用JavaScript来创建、读取、更新和删除Cookie,以及它们在实际应用中的作用。 首先,让我们了解创建Cookie的基本步骤。在JavaScript中,我们使用`document.cookie`属性来操作Cookie...

    jquery.cookie.js包

    `jquery.cookie.js`插件由Karsten Dambekalns开发,它是jQuery的一个轻量级解决方案,用于读取、设置和删除Cookie。使用这个插件,开发者可以方便地进行以下操作: 1. **设置Cookie**:通过`.cookie()`方法,我们...

    CookiesjsJavaScript客户端的Cookie操作库

    作为客户端库,它使得开发者无需后端服务器参与就能创建、读取、更新和删除Cookie,增强了前端应用对用户状态的管理能力。 **标签解析:** "JavaScript开发-其它杂项" 暗示了Cookies.js是JavaScript开发工具的一...

    js+cookie购物车

    3. **删除Cookie**:当用户移除购物车中的商品或者清空购物车,JavaScript会相应地更新或删除Cookie。 4. **更新Cookie**:购物车中的商品数量更改时,JavaScript会修改对应的Cookie值。 除了基本的存储功能,为了...

    JS Cookie的操作

    这篇博客“JS Cookie的操作”将深入探讨如何利用JavaScript进行Cookie的创建、读取和删除,以及一些相关的实用技巧。 一、Cookie的基本概念 Cookie是由服务器端设置并发送到客户端(浏览器)的一小段文本信息,...

    【JavaScript源代码】详解操作cookie的原生方法cookieStore.docx

    - **删除Cookie**:设置过期时间为过去,如`document.cookie = "key=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=path;";` 2. 新方式:`cookieStore` `cookieStore`是Chrome 87版本引入的新的API,主要用于...

    jquery下的cookie.js文件

    首先,jQuery.cookie.js是jQuery的一个扩展,它允许开发者用JavaScript来创建、读取、更新和删除Cookie。这个插件的核心功能是封装了对Cookie的操作,提供了友好的API接口,降低了开发者的使用难度。 一、安装与...

    jquery.cookie.js下载

    jquery cookie.js 官方下载,一款优秀的 jquery 插件,提供了非常轻量级、简单、实用的操作 cookie 的方法,包括读写、删除等操作,jquery cookie 路径,jquery cookie 时间,jquery cookie 有效期,jquery cookie ...

    jquery.cookie.js 以及用法 cookie读取与存储

    删除Cookie 要删除一个Cookie,可以将其设置为`null`,并指定过期日期为过去的时间。 ```javascript $.removeCookie('myCookie'); ``` ### 5. 配置选项 `jquery.cookie.js`还允许你配置Cookie的其他属性,如...

    JS操作Cookie

    JavaScript(简称JS)是一种广泛用于网页和网络应用的编程语言,尤其在客户端脚本中扮演着重要角色。Cookie是Web开发中的一个关键概念,它允许网站存储和检索用户信息,如浏览历史、登录状态等。在本文中,我们将...

    vue中设置、获取、删除cookie的方法

    Vue中设置、获取、删除cookie的方法主要包括在Vue项目中通过编写相应的JavaScript函数来操作cookie,以下是详细的知识点。 1. cookie的基本原理和用途 Cookie是一种小型文本文件,由网站服务器发送至用户的浏览器并...

    轻量级JS Cookie插件js-cookie的使用方法.docx

    删除Cookie 要删除一个Cookie,只需调用`Cookies.remove(name)`方法: ```javascript Cookies.remove('name'); ``` #### 4. 配置选项 在设置Cookie时,可以传递一个配置对象来控制有效期、域、路径等属性: ```...

    jquery1.4.2.js和jquery.cookie.js

    3. **删除Cookie**:使用`$.removeCookie(name, options)`来删除指定的Cookie。 三、使用示例 1. **创建Cookie**: ```javascript $.cookie('myCookie', 'Hello, World!', { expires: 7, path: '/' }); ``` 这将在...

    通过js来设置cookie和读取cookie,实现登陆时记住密码的功能

    4. 如果需要删除某个cookie,只需将其过期时间设置为过去,浏览器会自动清理。例如: ```javascript function deleteCookie(name) { setCookie(name, '', -1); } deleteCookie('username'); ``` 在实现“记住...

Global site tag (gtag.js) - Google Analytics