关于setCookie和clearcookie的path问题踩得坑

setCookie function: cookie

/**
 * 设置 cookie 值的函数
 * @param {[type]} cname  [key]
 * @param {[type]} cvalue [value]
 * @param {[type]} exdays [过时时间]
 */
function setCookie(cname, cvalue, exdays) {
    var d = new Date();
    d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
    var expires = "expires=" + d.toGMTString();
    document.cookie = cname + "=" + cvalue + "; " + expires;
}

正常的这样设置是没问题的,默认保存的path为当前路径dom

而后,我在首页也就是‘/’路径下设置了cookie,在子目录下须要清除,因而百度各类deletecookie方法,各类大概意思就是设置当前cookie过时,but,毫无做用,而后,再次调用setCookie方法,发现居然又存进去一个。这个时候对比发现,他们的不一样之处在于path。函数

因而,试试清除cookie时候加上根目录path,这时候终于清除了,方法以下:code

/*清除cookie*/
function clearcookie(name) {
    var keys = document.cookie.match(/[^ =;]+(?=\=)/g);
    for (let i = 0; i < keys.length; i++) {
        if (keys[i] == name) {
            document.cookie = keys[i] + '=0;path=/;expires=' + new Date(0).toUTCString(); //清除当前域名下的,例如:www.zhaojiuling.com
        }
    }
}

 

问题解决。get

 

备注:域名

清除cookie其余使用方法:io

document.cookie = keys[i] + '=0;path=/;expires=' + new Date(0).toUTCString();//清除当前域名下的,例如:www.baidu.com

document.cookie = keys[i] + '=0;path=/;domain=' + document.domain + ';expires=' + new Date(0).toUTCString();//清除当前域名下的,例如 www.baidu.com

document.cookie = keys[i] + '=0;path=/;domain=kevis.com;expires=' + new Date(0).toUTCString();//清除一级域名下的或指定的,例如 baidu.com
相关文章
相关标签/搜索