cookie,localStorage,sessionStorage
1.cookie
由于HTTP是一种无状态的协议,服务器单从请求内容上无法判断客户身份。因此,cookie弥补这个缺陷,每次请求都携带cookie,这样服务器就能能知道不同的客户端请求了。
对于同一域名下的cookie数量是有限制的,一般在30个~50个。IE50个,FF50个,Opera30个,Safari/WebKit则没有限制个数。
对于cookie的总大小一般是有限制的。总大小一般为4k左右(IE4095B,Opera4096B,Firefox和Safari4097B),任何cookie大小超过限制都被忽略,且永远不会被设置。
path
path设置了哪些目录能够读取当前的cookie值。默认情况下是当前域名的根目录,即"path=/";
path设置的正确格式为'path=/test/';在path的设置过程中,一定要遵循相同的格式。
path属性具有继承性。如"path=/a/"设置的cookie能在/a/目录下以及/a/的子目录下进行访问。
path属性只可写,不可读。且path属性不可被覆盖,如果试图写一个cookie,除path不一样外其他都一样,那么其实是写了两个cookie值。
domain
domain设置了cookie的域名。一般情况下,就是默认当前域名。
当然,如果我们想把cookie写到当前域名的上级域名中,实现与当前域名处于平级的其他子域名是可以得。
比如,当前域名是a.qq.com,在设置domain=qq.com,那么qq.com的域名以及其各级子域名均可以访问到这条cookie值。
secure
cookie的安全性设置。如果将某条cookie设置为secure,那么将不会被通过http传输到服务端,只能通过https等安全性传输协议才会被传输到服务器端。这个过程对于浏览器和用户是透明的。
在http的域名下设置secure的cookie,是无法看到的。
设置为secure时能保证传输过程中数据被加密,但是本地保存的cookie并不加密。
HttpOnly
在服务端可以设置HttpOnly属性,这样一来,在客户端就无法访问到到这条cookie。能有效的预防xss攻击等。
escape和unescape
在cookie中,不能包含空格,逗号,分号等特殊字符,因此在写cookie的时候,需要先escape,在取cookie的时候需要unescape操作。
2.localStorage
localStorage是一种完全本地化存储。大小约5M。以键值对的方式进行存储。
存取方式大约有三种,如localStorage.a='a';
localStorage['a']='a';
lovalStorage.setItem('a')='a';等
localStorage是永久存储的,没有过期时间。除非用户手动清理。
3.sessionStorage
sessionStorage数据的存储仅特定于某个会话中,也就是说数据只保持到浏览器关闭,当浏览器关闭后重新打开这个页面时,之前的存储已经被清除。
sessionStorage的API同localStorage的API基本一样。
在对sessionStorage进行操作时,会出发window.onstorage事件。