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賦值是不允許的,但是firfox可以。所以想要測試的話先在本地開服務器,讓後使用本地ip訪問該文件。進行cookie的操作。