cookie
是什麼:是一種用來在客戶端硬碟上儲存資訊的手段。為什麼用?:可以用來儲存一些資訊,實現一些特殊的效果。例如實現多少天內免登陸,或者儲存一些小資料。
cookie中的一些欄位含義:
- key=value(鍵=值) 就是 cookie的一個鍵值對,一般是根據key拿到對應的value
- expires(過期時間)設定該cookie的過期時間,也是用 ';' 來隔開,expires=GMT的時間字串,例如要30天免登陸,就可以設定過期時間為今天開始的30天之後的日期。如果不設定過期時間,預設瀏覽器關閉該cookie就消失了。
- path(路徑) cookie並不是在哪裡都能夠獲取到的。在網站中分為很多目錄,可能很多目錄中不需要使用到cookie,所以可以設定cookie的路徑,這樣更加安全,避免任意目錄都能訪問到該cookie。通過 path=/E:javascript/test 這樣只能在該目錄下才能獲取到該cookie
- domain(域)預設該cookie在該cookie所在域名下才能夠訪問到,但是有時候a.chaijinsong.com需要訪問b.chaijinsong.com下的cookie,這時候就需要設定domain=chaijinsong.com。這樣兩個子域名都可以訪問該cookie
- secure(安全性) 預設secure是為false的,即通過http協議來傳輸,但是如果 secure=true 的話,就只能t通過https來進行傳輸
怎麼用?:
document.cookie; //獲取cookie
"aaa=aaa;bbb=bbb" //類似於這種格式,但是並不是字串。
//設定cookie,也可以用來進行刪除cookie,即將過期時間設定為過去的時間,最後一個引數可以傳負數來實現
function setCookie(cname,cvalue,exdays){
var d = new Date();
d.setTime(d.getTime()+(exdays*24*60*60*1000));
var expires = "expires="+d.toGMTString();
document.cookie = cname + "=" + cvalue + "; " + expires;
}
setCookie('cjs','cjs',30); //設定 name為cjs,value為cjs的一個cookie,並且時間為30天。
setCookie('cjs','cjs',-1); //讓該cookie過期,然後在document.cookie中就沒有cjs=cjs這個cookie了。但是其他key=value還存在
//獲取某個key的cookie
function getCookie(key){
let arr1 = document.cookie.split(';');
for(let i=0;i<arr1.length;i++){
let arr2 = arr1[i].split('=');
if(key.trim() === arr2[0].trim()){
return (arr2[1]);
}
}
return "";
}
getCookie('cjs'); //因為上面已經將cjs這個cookie幹掉了,所以這裡得到為 ""
注意:在google瀏覽器上本地html檔案開啟直接給cookie賦值是不允許的,但是firefox可以。所以想要測試的話先在本地開伺服器,讓後使用本地ip訪問該檔案。進行cookie的操作。