cookie 和 localSrorage 、session 、indexDB 的区别

特性cookielocalStoragesessionStorageindexDB
数据生命周期⼀般由服务器生成, 可以设置过期时间除非被清理,否则⼀直存在页面关闭就清理除非被清理, 否则⼀直存在
数据存储大小4K5M5M无限
与服务端通信每次都会携带在 header 中,对于请求性能影响不参与不参与不参与

从上表可以看到, cookie 已经不建议用于存储 。如果没有大量数据存储需求的话, 可以使用 localStoragesessionStorage 。对于不怎么改变的数据尽量使用 localStorage 存储, 否则可以用 sessionStorage 存储。

对于 cookie ,我们还需要注意安全性

属性作用
value如果用于保存用户登录态,应该将该值加密,不能使用明文的用户标识
http-only不能通过 JS 访问 Cookie ,减少 XSS 攻击
secure只能在协议为 HTTPS 的请求中携带
same-site规定浏览器不能在跨域请求中携带 Cookie ,减少 CSRF 攻击
简述 cookie 和 session 的区别