sessionStorage 、localStorage 和 cookie 之間的區別
共同點:都是保存在瀏覽器端,且同源的。
區別:cookie數據始終在同源的http請求中攜帶(即使不需要),即cookie在瀏覽器和服務器間來回傳遞。
cookie數據不能超過4k,同時因為每次http請求都會攜帶cookie,所以cookie只適合保存很小的數據,如會話標識。
cookie只在設置的cookie過期時間之前一直有效,即使窗口或瀏覽器關閉。
cookie也是在所有同源窗口中都是共享的。
-
同源的判斷規則:
http://www.test.com
https://www.test.com (不同源,因為協議不同)
http://my.test.com(不同源,因為主機名不同)
http://www.test.com:8080(不同源,因為端口不同)
/**
* 存入cookie
* @param cookieName
* @param cookieValue
*/
function setCookie(cookieName, cookieValue) {
var Days = 7;
var exp = new Date();
exp.setTime(exp.getTime() + Days * 24 * 60 * 60 * 1000);//過期時間一個星期分鍾
document.cookie = cookieName + "=" + escape(cookieValue) + ";expires=" + exp.toGMTString()+";path=/";
}
/**
* 獲取cookie
*/
function getCookie(name) {
var cookies = document.cookie.split(";");
for(var i = 0; i < cookies.length; i++){
var cookieCrumbs = cookies[i].split("=");
var cookieName = cookieCrumbs[0];
var cookieValue = cookieCrumbs[1];
if (cookieName == name){
return cookieValue;
}
}
return null;
}
/**
* 刪除cookies
*/
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()+";path=/";
}