三者都是客户端存储,区别主要在容量、生命周期、是否随请求发送。
- Cookie:容量约 4KB,可设置过期时间(默认会话级),每次同源 HTTP 请求自动携带(随请求头发送),可通过 HttpOnly 禁止 JS 读取、Secure 限制 HTTPS、SameSite 防 CSRF。主要用于会话标识等需要服务端读取的场景。
- localStorage:容量一般 5-10MB,持久保存,除非主动清除否则永不过期,不随请求发送,仅 JS 读写,同源共享。
- sessionStorage:容量与 localStorage 相当,仅在当前标签页会话有效,关闭标签页即清除,不同标签页之间隔离(即使同源)。
易错点:三者都是同步 API,大数据量会阻塞主线程;localStorage 存敏感信息有 XSS 泄露风险(相比 HttpOnly Cookie 更易被窃取);隐私模式下容量和行为可能受限。追问方向:IndexedDB 的使用场景(大数据量、结构化存储)、Cookie 的 SameSite 三种取值、存储事件的跨标签页通信。