cookie的常用操作

JavaScript是運(yùn)行在客戶(hù)端的腳本,因此一般是不能夠設(shè)置Session的,因?yàn)镾ession是運(yùn)行在服務(wù)器端的。而cookie是運(yùn)行在客戶(hù)端的,所以可以用JS來(lái)設(shè)置cookie。

假設(shè)有這樣一種情況,在某個(gè)用例流程中,由A頁(yè)面跳至B頁(yè)面,若在A頁(yè)面中采用JS用變量temp保存了某一變量的值,在B頁(yè)面的時(shí)候,同樣需要使用JS來(lái)引用temp的變量值,對(duì)于JS中的全局變量或者靜態(tài)變量的生命周期是有限的,當(dāng)發(fā)生頁(yè)面跳轉(zhuǎn)或者頁(yè)面關(guān)閉的時(shí)候,這些變量的值會(huì)重新載入,即沒(méi)有達(dá)到保存的效果。解決這個(gè)問(wèn)題的最好的方案是采用cookie來(lái)保存該變量的值,那么如何來(lái)設(shè)置和讀取cookie呢?

首先需要稍微了解一下cookie的結(jié)構(gòu),簡(jiǎn)單地說(shuō):cookie是以鍵值對(duì)的形式保存的,即key=value的格式。各個(gè)cookie之間一般是以“;”分隔。

JS設(shè)置cookie

假設(shè)在A頁(yè)面中要保存變量username的值("yyf")到cookie中,key值為name,則相應(yīng)的JS代碼為:

document.cookie = "name=" + yyf;

假設(shè)需要加上過(guò)期時(shí)間,方法如下:

function setCookie(name,value){
    var Days = 30;
    var exp = new Date();
    exp.setTime(exp.getTime() + Days*24*60*60*1000);//時(shí)間戳以毫秒為單位
    document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
}

JS讀取cookie

假設(shè)cookie中存儲(chǔ)的內(nèi)容為:username=yyf;password=123

則在B頁(yè)面中獲取變量username的值的JS代碼如下:

var username=document.cookie.split(";")[0].split("=")[1];
//則該username獲取結(jié)果為yyf
注意:上述方法僅指明確cookie的數(shù)據(jù)數(shù)目和順序的情況下才可使用,比如自己設(shè)置的或者通過(guò)瀏覽器查看后的頁(yè)面。若是一個(gè)陌生頁(yè)面,則應(yīng)該通過(guò)如下萬(wàn)能法
function getCookie(cName){
    var cookieArr = document.cookie.split(";");//將cookie通過(guò)分號(hào)分割,存為一個(gè)名為cookieArr的數(shù)組
    for (var i=0; i < cookieArr.length; i++){
        var cookieVal = cookieArr[i].split("=");//遍歷數(shù)組,將每一個(gè)cookie的key和value通過(guò)等于號(hào)分割,存為一個(gè)名為cookieVal的數(shù)組
        if (cName == cookieVal[0])
        return unescape(cookieVal[1]);//將value值解密后拿出
    }
    return null;
}

刪除cookies

function delCookie(name){
    var exp = new Date();
    exp.setTime(exp.getTime() - 1);//將本地時(shí)間戳設(shè)置為不存在的一個(gè)時(shí)間即可
    var cval=getCookie(name);
    if(cval!=null)
    document.cookie= name + "="+cval+";expires="+exp.toGMTString();
}

jQuery-Cookie插件

jQuery.cookie.js是個(gè)很好的cookie插件,包括設(shè)置、刪除、獲取等一系列完整的cookie操作

  • 創(chuàng)建會(huì)話(huà)cookie(Session cookie,既瀏覽器內(nèi)存cookie,瀏覽器關(guān)閉后自動(dòng)刪除)
$.cookie('the_cookie', 'the_value');
  • 創(chuàng)建一個(gè)生生存周期為7天的cookie
$.cookie('the_cookie', 'the_value', { expires: 7 });
  • 創(chuàng)建一個(gè)有期限的cookie,整個(gè)站點(diǎn)可以讀取
$.cookie('the_cookie', 'the_value', { expires: 7, path: '/' });
  • 讀取cookie
$.cookie('the_cookie'); // => "the_value"
$.cookie('not_existing'); // => undefined
  • 讀取所有可用cookie
$.cookie(); // => { "the_cookie": "the_value", "...remaining": "cookies" }
  • 刪除cookie
// 找到指定的cookie返回true,否則返回false
$.removeCookie('the_cookie');
// 刪除指定過(guò)path的cookie
$.removeCookie('the_cookie', { path: '/' });
$.cookie(’name’, ‘value’, {expires: 7, path: ‘/’, domain: ‘jquery.com’, secure: true});

(1)讀取cookie值
   $.cookie(cookieName)  cookieName:要讀取的cookie名稱(chēng)。
     示例:$.cookie("username"); 讀取保存在cookie中名為的username的值。
(2)寫(xiě)入設(shè)置Cookie值:
   $.cookie(cookieName,cookieValue);  cookieName:要設(shè)置的cookie名稱(chēng),cookieValue表示相對(duì)應(yīng)的值。
   示例:$.cookie("username","admin"); 將值"admin"寫(xiě)入cookie名為username的cookie中。
      $.cookie("username",NULL);   銷(xiāo)毀名稱(chēng)為username的cookie
(3)[option]參數(shù)說(shuō)明:
    expires:  有限日期,可以是一個(gè)整數(shù)或一個(gè)日期(單位:天)?! ∵@個(gè)地方也要注意,如果不設(shè)置這個(gè)東西,瀏覽器關(guān)閉之后此cookie就失效了
    path:    cookie值保存的路徑,默認(rèn)與創(chuàng)建頁(yè)路徑一致。
      domin: cookie域名屬性,默認(rèn)與創(chuàng)建頁(yè)域名一樣?! ∵@個(gè)地方要相當(dāng)注意,跨域的概念,如果要主域名二級(jí)域名有效則要設(shè)置  ".xxx.com"
      secrue:   一個(gè)布爾值,表示傳輸cookie值時(shí),是否需要一個(gè)安全協(xié)議。

另外更多操作詳情點(diǎn)擊API文檔

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容