cookie
cookie,有時也用其復數形式Cookies,指某些網站為了辨別用戶身份、進行session跟蹤而儲存在用戶本地終端上的數據(通常經過加密)。定義於RFC2109和2965都已廢棄,最新取代的規范是RFC6265。
cookie的作用
服務器可以利用Cookies包含信息的任意性來篩選並經常性維護這些信息,以判斷在HTTP傳輸中的狀態。Cookies最典型的應用是判定注冊用戶是否已 經登錄網站,用戶可能會得到提示,是否在下一次進入此網站時保留用戶信息以便簡化登錄手續,這些都是Cookies的功用。另一個重要應用場合是“購物 車”之類處理。用戶可能會在一段時間內在同一家網站的不同頁面中選擇不同的商品,這些信息都會寫入Cookies,以便在最后付款時提取信息。
js設置cookie
document.cookie="popped=yes"
js獲取cookie
1 function get_cookie(Name) { 2 var search = Name + "="//查詢檢索的值 3 var returnvalue = "";//返回值 4 if (document.cookie.length > 0) { 5 sd = document.cookie.indexOf(search); 6 if (sd!= -1) { 7 sd += search.length; 8 end = document.cookie.indexOf(";", sd); 9 if (end == -1) 10 end = document.cookie.length; 11 //unescape() 函數可對通過 escape() 編碼的字符串進行解碼。 12 returnvalue=unescape(document.cookie.substring(sd, end)) 13 } 14 } 15 return returnvalue; 16 } 17 //使用方式: 18 get_cookie("popped");
給cookie設置終止日期
例如:如果要將cookie設置為10天后過期,可以這樣實現:
1 //獲取當前時間 2 var date=new Date(); 3 var expiresDays=10; 4 //將date設置為10天以后的時間 5 date.setTime(date.getTime()+expiresDays*24*3600*1000); 6 //將userId和userName兩個cookie設置為10天后過期 7 document.cookie="userId=828; userName=hulk; expires="+date.toGMTString();
其中GMT_String是以GMT格式表示的時間字符串,這條語句就是將userId這個cookie設置為GMT_String表示的過期時間,超過這個時間,cookie將消失,不可訪問。
刪除cookie
為了刪除一個cookie,可以將其過期時間設定為一個過去的時間,例如:
1 //獲取當前時間 2 var date=new Date(); 3 //將date設置為過去的時間 4 date.setTime(date.getTime()-10000); 5 //將userId這個cookie刪除 6 document.cookie="userId=828; expires="+date.toGMTString();
下面封裝上面的方法,js操作cookie操作類封裝
(這是我從網上找到的一個封裝類,不過原先的經測試有點bug,修改之后可以使用了,后面如果遇到更好的封裝方法我會繼續分享出來)
1 var cookie = { 2 set:function(key,val,time){//設置cookie方法 3 var date=new Date(); //獲取當前時間 4 var expiresDays=time; //將date設置為n天以后的時間 5 date.setTime(date.getTime()+expiresDays*24*3600*1000); //格式化為cookie識別的時間 6 document.cookie=key + "=" + val +";expires="+date.toGMTString(); //設置cookie 7 }, 8 get:function(key){//獲取cookie方法 9 /*獲取cookie參數*/ 10 var getCookie = document.cookie.replace(/[ ]/g,""); //獲取cookie,並且將獲得的cookie格式化,去掉空格字符 11 var arrCookie = getCookie.split(";") //將獲得的cookie以"分號"為標識 將cookie保存到arrCookie的數組中 12 var tips; //聲明變量tips 13 for(var i=0;i<arrCookie.length;i++){ //使用for循環查找cookie中的tips變量 14 var arr=arrCookie[i].split("="); //將單條cookie用"等號"為標識,將單條cookie保存為arr數組 15 if(key==arr[0]){ //匹配變量名稱,其中arr[0]是指的cookie名稱,如果該條變量為tips則執行判斷語句中的賦值操作 16 tips=arr[1]; //將cookie的值賦給變量tips 17 break; //終止for循環遍歷 18 } 19 } 20 return tips; 21 }, 22 delete:function(key){ //刪除cookie方法 23 var date = new Date(); //獲取當前時間 24 date.setTime(date.getTime()-10000); //將date設置為過去的時間 25 document.cookie = key + "=v; expires =" +date.toGMTString();//設置cookie 26 } 27 }
使用方式:
cookie.set("uesr","sss",24);//設置為24天過期
alert(cookie.get("uesr"));//獲取cookie