- cookie 是网站为了标示用户身份而储存在用户本地终端上的数据,始终在同源的 http 请求中携带(即使不需要),记会在浏览器和服务器间来回传递
- sessionStorage 和 localStorage 不会自动把数据发给服务器,仅在本地保存
| 特性 | sessionStorage | localStorage | cookie | indexDB | | —- | —- | —- | —- | —- | | 数据生命周期 | 页面关闭就清理 | 除非被清理,否则一直存在 | 一般由服务器生成,可以设置过期时间 | 除非被清理,否则一直存在 | | 数据存储大小 | 5M | 5M | 4K | 无限 | | 与服务端通信 | 不参与 | 不参与 | 每次都会携带在 header 中,对于请求性能影响 | 不参与 |
从上表可以看到,cookie
已经不建议用于存储。如果没有大量数据存储需求的话,可以使用 localStorage
和 sessionStorage
。对于不怎么改变的数据尽量使用 localStorage
存储,否则可以用 sessionStorage
存储。cookie
的安全性问题
- http-only , 作用是: 不能通过 JS 访问 Cookie,减少 XSS 攻击
- same-site , 作用是: 规定浏览器不能在跨域请求中携带 Cookie,减少 CSRF 攻击