1.基本属性:
cookie: 可设置失效时间,没有设置的话,默认是关闭浏览器后失效,主要用来保存登录信息
localStorage: 除非被手动清除,否则将会永久保存。
sessionStorage: 仅在当前网页会话下有效,关闭页面或浏览器后就会被清除。同源不共享。刷新页面数据依旧存在。但是页面关闭时,sessionStorage中的数据就会被清空
2.内存大小:
cookie: 4KB 左右 localStorage
localStorage:5M甚至更多
sessionStorage: 可以保存 5MB 的信息
3.缺点:
cookie: 每次都会携带在 HTTP 头中,如果使用cookie 保存过多- 数据会带来性能问题
localStorage 和 sessionStorage: 仅在客户端 (即浏览器) 中保存,不参与和服务器的通信
4.构成:
token 的组成: uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名,token
的前几位以哈希算法压缩成的一定长度的十六进制字符串)
特点:服务端无状态化、可扩展性好支持移动端设备.安全.支持跨程序调用
每一次请求都需要携带 token,需要把 token 放到 HTTP 的 Header 里
基于 token 的用户认证是一种服务端无状态的认证方式,服务端不用存放 token 数据。用解析
token 的计算时间换取 session 的存储空间,从而减轻服务器的压力,减少频繁的查询数据库
token 完全由应用管理,所以它可以避开同源策略
5.作用域:
cookie:在所有同源窗口中都是共享的
sessionStorage:在同一个浏览器窗口是共享的(不同浏览器,即使是统一页面也不共享)
localStorage:在所有同源窗口中共享
应用场景
cookie:判断用户是否登录过网站,以便实现下次自动登录或记住密码;保存事件信息
sessionStorage:敏感账号一次性登录,单页面用的较多
localStorage:用于长期登录,适于长期保存在本地的数据
同源策略请求
同源:协议相同/域名相同/端口相同
非同源策略请求:跨域问题