js cookie无法删除,总是剩下一个

export function getCookie(name) {
    var cookieArr = document.cookie.split("; "); //使用"; "分割Cookie
    var cva = [],
        temp;
    //循环的得到Cookie名称与值
    for (var i = 0; i < cookieArr.length; i++) {
        temp = cookieArr[i].split("="); //用"="分割Cookie的名称与值
        cva[temp[0]] = unescape(temp[1]);
    }
    if (name) {
        //如果有name则输出这个name的Cookie值
        return cva[name];
    } else {
        //如果没有name则输出空数组
        return cva;
    }
}
/**
 * 保存cookie(保存时间为30天)
 * @param name
 * @param value
 */
export function setCookie(name, value) {
    var domain = '.' + location.host;
    var Days = 30;
    var exp = new Date();
    exp.setTime(exp.getTime() + Days * 24 * 60 * 60 * 1000);
    document.cookie = name + "=" + escape(value) + ";expires=" + exp.toGMTString() + "Domain" + domain + ";path=/";
}
/**
 * 删除cookie
 * @param name
 */
export function delCookie(name) {
    var domain = '.' + location.host;
    var exp = new Date();
    exp.setTime(exp.getTime() - 1);
    var cval = getCookie(name);
    if (cval != null) {
        document.cookie = name + "=" + cval + ";expires=" + exp.toGMTString() + "Domain" + domain + ";path=/";
    }
}

clipboard.png

阅读 2.7k
2 个回答

不知道你为什么删除的时候,还剩下一个,按照道理不应该;既然能删除一个,就能删除其他的。

唯一的需要关注:

  1. 域名对不对
  2. path对不对
  3. 是不是http only 的

最后,这种手写看上去很不错。 但是给你推荐一个 库 js-cookie 用来处理cookie 很不错; 也可以参考他的源码实现

楼上说的很对,就是这个思路
还有就是看看是不是站点自动在往上加啊,我之前也遇见过,发现是站点轮训在写 cookie

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题