1.特征
| 特征 | cookie | localStorage | sessionStorage | IndexedDB |
|---|---|---|---|---|
| 生命周期 | 一般由服务器生成,可以设置过期时间 | 除非被清理,否则一直存在 | 仅在当前会话有效 | 除非被清理,否则一直存在 |
| 存储大小 | 4K | 5-10M(各家浏览器不同) | 5-10M(各家浏览器不同) | 不少于 250MB |
| 与服务端通信 | 每次都会携带在 header 中,对于请求性能影响 | 不参与 | 不参与 | 不参与 |
2.使用场景
cookie:在浏览器中保存少量信息,常用来保存状态,会话信息等.如用户登录态相关数据.使用时要注意安全性
localStorage:由于生命周期是永久的,适合保存需要长期存储在本地的数据.
sessionStorage:由于仅在当前会话中有效,保存不需要长期保存的数据.
IndexedDB:通俗地说,IndexedDB 就是浏览器提供的本地数据库.可以存储不适合使用以上三种方式存储的大量数据.
3.cookie的常见属性
value: 如果用于保存用户登录态,应该将该值加密,不能使用明文的用户标识
http-only: 不能通过 JS 访问 Cookie,减少 XSS 攻击
secure: 只能在协议为 HTTPS 的请求中携带
same-site: 规定浏览器不能在跨域请求中携带 Cookie,减少 CSRF 攻击
Expires: 过期时间(秒),在设置的某个时间点后该 Cookie 就会失效,如 expires=Money, 05-Dec-11 11:11:11 GMT
domain: 字段为可以访问此cookie的域名。
path: 字段为可以访问此cookie的页面路径。 比如domain是abc.com,path是/test,那么只有/test路径下的页面可以读取此cookie。