新增cookie、刪除cookie、清除cookie

web張發表於2019-06-29
引數 描述
name 必需。規定 cookie 的名稱。
value 必需。規定 cookie 的值。
expire 可選。規定 cookie 的有效期。(new Date())
path 可選。規定 cookie 的伺服器路徑。
domain 可選。規定 cookie 的域名。
secure 可選。規定是否通過安全的 HTTPS 連線來傳輸 cookie。

1、新增cookie

function addCookie(name,value,expire,path,domain){
    document.cookie= name + '=' + value + 
        ((path)?';path='+path:'') + 
        ((expire)?';expires='+expire:'') +  
        ((path)?';path='+path:'') +  
        ((domain)?';domain='+domain:'') 
}

2、刪除cookie

function deleteCookie(name,path,domain){
    document.cookie= name + '=' + 
        ((path)?';path='+path:'') + 
        ((domain)?';domain='+domain:'') + 
        ';expires=Thu,01-Jan-1970 00:00:01 GMT';
}

3、清除cookie

function clearCookie(){
    let paths = ['/'] 
    let domain =[]
    let host = location.hostname
    domain.push(host)
    if(host.indexOf('www') > -1){
        domain.push(host.substr(3))
    }
    let keys = document.cookie.match(/[^ =;]+(?=\=)/g)
    function deleteCookie(name,path,domain){
        let keys = document.cookie.match(/[^ =;]+(?=\=)/g) || []
        if(keys.indexOf(name)<0)return
        document.cookie= name + '=' + ((path)?';path='+path:'') + ((domain)?';domain='+domain:'') + ';expires=Thu,01-Jan-1970 00:00:01 GMT';
    }
    // 確保paths、domain、keys都不相同,都要進行清除
    paths.forEach(p=>{
        domain.forEach(d=>{
            keys.forEach(k=>{
                deleteCookie(k,p,d)
            })
        })
    })
}

4、 刪除不掉的情況
Domain的域不同的時候;
Http/HttpOnly被勾選、Secure被勾選:後端寫入,不允許修改

相關文章