js操做cookie

什麼是cookie

cookie是存儲在訪問者計算機中的一個變量,當同一臺計算機經過瀏覽器請求頁面時,就會發送這個cookie,JavaScript能夠建立和取回cookie值。
每一個cookie都是key-value鍵值對的形式,如「username=123;userid=321」。
cookie使用escape()對它沒法識別的「;」,「,」,「=」及空格進行編碼,對應的在取出值之後須要使用unescape()進行解碼才能獲得原來的cookie值。html

cookie跨域

默認狀況下,在某頁面下建立的cookie,能夠被該目錄下的其餘頁面訪問及子目錄下的頁面訪問,可是不可被不一樣源的頁面訪問,如www.xxxx.com/views/a.html下的cookie能夠被www.xxxx.com/views/b.html和www.xxxx.com/views/index/c.html訪問,可是不能夠被www.xxxx.com/d.html訪問,這涉及到了同源策略。跨域

同源策略指的是不一樣源的客戶端腳本在無明確受權下不可訪問讀寫對方的資源,源指的是協議、域名、端口號。如http://www.xxx.com:80/,協議就是http或https,域名就是xxx.com,端口通常默認80。瀏覽器

解決cookie的跨域問題,如www.google.com和gmail.google.com的跨域,能夠使用document.domain設置相同的域名。cookie

建立cookie

參數存有 cookie 的名稱、值以及過時天數dom

function setCookie(c_name,value,expire){
  var date = new Date();
  date.setSeconds(date.getSeconds()+expire);
  document.cookie = c_name+'='+escape(value)+'; expires='+date.toGMTString();
}

讀取cookie

function getCookie(c_name)
{
    if(document.cookie.length>0){
        let c_start = document.cookie.indexOf(c_name+'=')
        if(c_start!=-1){
            c_start = c_start+c_name.length+1
            let c_end = document.cookie.indexOf(';',c_start)
            if(c_end == -1) c_end=document.cookie.length
            return unescape(document.cookie.substring(c_start,c_end))
        }
    }
    return ""   
}

刪除cookie

function delCookie(c_name){
    setCookie(c_name,'',-1)
}
相關文章
相關標籤/搜索