1.首先來說下cookie的作用 我們在瀏覽器中,經常涉及到數據的交換,比如你登錄郵箱,登錄一個頁面。我們經常會在此時設置30天內記住我,或者自動登錄選項。那麼它們是怎麼記錄信息的呢,答案就是今天的主角cookie了,Cookie是由HTTP伺服器設置的,保存在瀏覽器中,但HTTP協議是一種無狀態協 ...
1.首先來說下cookie的作用
我們在瀏覽器中,經常涉及到數據的交換,比如你登錄郵箱,登錄一個頁面。我們經常會在此時設置30天內記住我,或者自動登錄選項。那麼它們是怎麼記錄信息的呢,答案就是今天的主角cookie了,Cookie是由HTTP伺服器設置的,保存在瀏覽器中,但HTTP協議是一種無狀態協議,在數據交換完畢後,伺服器端和客戶端的鏈接就會關閉,每次交換數據都需要建立新的鏈接。
2.cookie的聲明周期會隨著瀏覽器的關閉而銷毀!
持久cookie則是設定了它的生命周期expires,此時,cookie像商品一樣,有個保質期,關閉瀏覽器之後,它不會銷毀,直到設定的過期時間。對於持久cookie,可以在同一個瀏覽器中傳遞數據,比如,你在打開一個淘寶頁面登陸後,你在點開一個商品頁面,依然是登錄狀態,即便你關閉了瀏覽器,再次開啟瀏覽器,依然會是登錄狀態。這就是因為cookie自動將數據傳送到伺服器端,在反饋回來的結果。持久cookie就像是我們辦理了一張積分卡,即便離開,信息一直保留,直到時間到期,信息銷毀。
設置cookie
function setCookie(name,value,time){ var strsec = getsec(time); var exp = new Date(); exp.setTime(exp.getTime() + strsec*1); document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString(); } function getsec(str){ var str1=str.substring(1,str.length)*1; var str2=str.substring(0,1); if (str2=="s"){ return str1*1000; }else if (str2=="h"){ return str1*60*60*1000; }else if (str2=="d"){ return str1*24*60*60*1000; } //這是有設定過期時間的使用示例: //s20是代表20秒 //h是指小時,如12小時則是:h12 //d是天數,30天則:d30 }; 示例: setCookie("name","hayden","s20")
刪除cookie
function delCookie(name){ var exp = new Date(); exp.setTime(exp.getTime() - 1); var cval=getCookie(name); if(cval!=null) document.cookie= name + "="+cval+";expires="+exp.toGMTString(); }
獲取cookie
function getCookie(name){ var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)"); if(arr=document.cookie.match(reg)){ return unescape(arr[2]); }else{ return null; } }