1.本地存储包括cookie, sessionStorage,localStorage三种,
2.区别:
sessionStorage和localStorage两个只是本地存储,不能与浏览器进行通信;
cookie 的内存比较小,大概4kb,sessionStorage和localStorage大概5M;
sessionStorage作用在单个页签之内,页签关闭sessionStorage消失,localStorage作用在浏览器之内,浏览器关闭localStorage也不会消失,除非手动清除,跨页签可以读取数据,cookie作用在自己设置的域下,举例:Set-Cookie: user=xxxx; Path=/; Domain=.example.com;
3.对三种的使用方法理解
1)cookie的使用
封装cookie.js文件,如下
var cookie = { setCookie: function (name, value, time) { //cookie有效期1天 if (!time) { time=24/24; } var Days = time; var exp = new Date(); exp.setTime(exp.getTime() + Days * 24 * 60 * 60 * 1000); document.cookie = name + "=" + encodeURI(value) + ";expires=" + exp.toGMTString() +";path=/; domain=.example.cn"; }, getCookie: function (name) { var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)"); if (arr = document.cookie.match(reg)) return decodeURI(arr[2]); else return null; }, clearCookie: function (name) { this.setCookie(name, "", -1); } }
注意:cookie遵循“同源策略”,通过document.cookie不能读取到cookie信息;cookie存储在客户端,session存储在服务端,服务器端有个session列表,将cookie信息一一对应起来;服务器传送cookie时设置属性secure为true,表示创建的cookie只能在HTTPS连接中被浏览器传递到服务器端进行会话验证,如果是HTTP连接则不会传递该信息,所以很难被窃听到;服务器传送cookie时设置属性HttpOnly,HttpOnly告知浏览器不允许通过脚本document.cookie去更改这个cookie值,事实上,设置HttpOnly之后,这个值在document.cookie中不可见。但是在HTTP请求的过程中,依然会发送这个。(后两条我没有去验证)参考原文:https://blog.csdn.net/shuidinaozhongyan/article/details/78155444