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=/";
}