關於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
相關文章
相關標籤/搜索