Cookie、Session、LocalStorage、SessionStorage、Token

                  Session Cookie LocalStorage sessionStorage
存储类型 Object、KeyValue KeyValue KeyValue KeyValue
存储方式 服务器存储 浏览器存储 浏览器存储 浏览器存储
大小限制 无限制 4KB(20个限制,不同浏览器有不同个数限制) 5MB 5MB
有效时间 短期(根据HttpSession设置) 短期(根据cookie设置) 长期永久 会话结束即清除
安全性 低(设置https时,客户端无法直接读取,安全性较好)
跨域 允许 不允许 不允许 不允许
使用场景 服务器端保持用户登录状态 客户端保持登录状态、个性化信息 数据缓存、系统配置、Token 敏感操作信息等

Token

最后补充一下Token,这些浏览器数据存储技术与Token有说不清的关系,但技术本身是没任何关系,只跟场景有一定的联系。
Token是令牌,一般而言,Web中的Token代指JWT(JSON Web Token)中的Token。服务端根据用户信息生成了Token,需要依赖介质存储于客户端,从安全性考虑,由于Cookie设置了HttpOnly之后,XSS跨站脚本攻击是能防御的,因此大部分Token都存储于Cookie之中,在发送请求时附带cookie即可。
当然,如果你愿意,也是可以将Token存储于SessionStorage、LocalStorage,甚至是window对象中。

引用:
https://stormpath.com/blog/where-to-store-your-jwts-cookies-vs-html5-web-storage
http://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/http/HttpSession.html
http://javascript.ruanyifeng.com/bom/cookie.html

你可能感兴趣的:(Cookie、Session、LocalStorage、SessionStorage、Token)