cookie 和 localSrorage 、session 、indexDB 的区别
| 特性 | cookie | localStorage | sessionStorage | indexDB |
|---|---|---|---|---|
| 数据生命周期 | ⼀般由服务器生成, 可以设置过期时间 | 除非被清理,否则⼀直存在 | 页面关闭就清理 | 除非被清理, 否则⼀直存在 |
| 数据存储大小 | 4K | 5M | 5M | 无限 |
| 与服务端通信 | 每次都会携带在 header 中,对于请求性能影响 | 不参与 | 不参与 | 不参与 |
从上表可以看到, cookie 已经不建议用于存储 。如果没有大量数据存储需求的话, 可以使用 localStorage 和 sessionStorage 。对于不怎么改变的数据尽量使用 localStorage 存储, 否则可以用 sessionStorage 存储。
对于 cookie ,我们还需要注意安全性
| 属性 | 作用 |
|---|---|
| value | 如果用于保存用户登录态,应该将该值加密,不能使用明文的用户标识 |
| http-only | 不能通过 JS 访问 Cookie ,减少 XSS 攻击 |
| secure | 只能在协议为 HTTPS 的请求中携带 |
| same-site | 规定浏览器不能在跨域请求中携带 Cookie ,减少 CSRF 攻击 |