浏览器本地存储方案可以分为三个方面,分别为Cookie、WebStorage、IndexedDB。
Cookie由于HTTP协议是无状态的,一旦数据交换完毕,此次链接就会关闭,再次交换数据就需要重新连接,意味着服务器无法从链接上跟踪会话。假如A与B同时购买了一件商品,不进行会话跟踪的话服务器就无法判断究竟是谁购买了此商品。服务端为进行会话跟踪,给每个客户端颁发一个通行证,每个人访问必须携带通行证,这样服务端就能区别用户身份了。Cookie实际上是一小段的文本信息,服务端将需要通行证信息Cookie发送到浏览器,浏览器将通行证存储起来,并且对于同源的每个请求都会自动携带通行证信息(CSRF跨站请求伪造基于此策略),于是服务端就可以判断用户身份。Cookie通常用于存储一些通用的数据,比如用户的登陆状态、首选项等,而不建议存储业务数据,虽然随着时代的进步,HTML5所提供的Web存储机制已经逐步替代了Cookie,但有些较为老的浏览器还是不兼容Web存储机制,所以在某些需求下为了处理兼容性的情况可能还是需要Cookie存储一些业务信息。
优点Cookie的兼容性非常的好,兼容现在市面上所有的主流浏览器。
缺点存储量小,虽不同浏览器的存储量不同,但基本上都是在4KB左右。
影响性能,由于Cookie会由浏览器作为请求头发送,因此当Cookie存储信息过多时,会影响特定域的资源获取的效率,增加文档传输的负载。
安全问题,存储在Cookie的任何数据可以被访问,因此不能在Cookie中储存敏感信息,此外重要的Cookie还需要使用HTTPONLY防止恶意的Js读写。
由于第三方Cookie的滥用,有些用户在浏览网页时会禁用Cookie,所以我们不得不测试用户是否支持Cookie。
操作一个完整支持Unicode的Cookie读取/写入器。
/*\
*
*
::cookies.js::
*
*
A