Cookie、sessionStorage、localStorage 的区别
2025-05-07 09:07 阅读(44)

八个方面对比解析Cookie、sessionStorage、localStorage 的区别❓

定义与本质

Cookie:浏览器与服务器之间自动传输的小型文本数据,它由服务器通过 HTTP 响应头(Set-Cookie)发送给浏览器,之后浏览器会在每次请求同一网站时自动通过 HTTP 请求头(Cookie)将其回传给服务器,从而实现有状态的会话管理

localStorage:是浏览器提供的一种 客户端存储机制(即浏览器本地存储),允许网页在用户的本地浏览器中存储 持久化键值对数据,不会自动传给服务器。

sessionStorage:是浏览器提供的另一种 客户端存储机制(即浏览器本地存储),一般用于在 当前浏览器标签页会话期间 临时存储键值对数据,仅在当前标签页会话中有效,关闭即清空。

存储容量

Cookie:通常不超过4kb。

localStorage:通常大小限制为5MB,不同浏览器存在差异。

sessionStorage:通常大小限制为5MB,不同浏览器存在差异。

生命周期

Cookie:会话期 Cookie的生命周期与浏览器会话关联,一般浏览器关闭就自动删除。持久性Cookie的生命周期与Expires 或 Max-Age 属性设置的过期时间相联系,在过期时间之前持久保存在本地,浏览器关闭也会保存。当到达过期时间浏览器自动删除。

localStorage:永久性的,除非主动删除或用户清理缓存。

sessionStorage:其生命周期与浏览器标签页严格绑定,关闭标签页或窗口即清除,刷新页面仍保留。

作用域

Cookie:由 Domain 和 Path 两个属性控制,同时受 SameSite 和 Secure 等安全属性的影响。


Domain:指定哪些域名可以访问该 Cookie,如果不设置则 Cookie 仅对 当前域名 有效。

Path:指定哪些路径可以访问该 Cookie,如果不设置默认为 当前路径及其子路径

SameSite:控制 Cookie 是否允许在跨站请求中发送。

Secure:限制 Cookie 仅通过 HTTPS 传输。


localStorage:其访问权限严格遵循浏览器的 同源策略,仅限完全相同的域名。

sessionStorage:其作用域比 localStorage 更严格,除了 同源策略 外,还受 标签页隔离 限制。数据仅对 当前标签页 有效,即使同源的其他标签页也无法访问。


特性 sessionStoragelocalStorageCookie
跨标签页共享 ❌ 仅当前标签页 ✅ 同源所有标签页 ✅ 同源所有标签页
跨子域名共享 ❌ 严格同源 ❌ 严格同源 ✅ 可设 Domain=.example.com
协议隔离 ✅ HTTP/HTTPS 不互通 ✅ HTTP/HTTPS 不互通 ❌ 默认共享(除非 Secure)
路径限制
❌ 全路径共享 ❌ 全路径共享 ✅ 可设 Path=/admin


是否参与请求

cookie:自动携带,浏览器会在每次符合作用域的 HTTP 请求头中自动附加 Cookie。

localstorage:  纯前端存储:数据仅通过 JavaScript API 读写,不参与任何网络通信。

sessionStorage:与localstorage一样。

安全性

安全维度Cookie localStoragesessionStorage
XSS 攻击风险高风险中高风险中高风险
CSRF 攻击风险高风险无风险无风险
数据持久性风险中风险高风险低风险
网络传输风险高风险无风险无风险
隐私模式泄漏中风险中风险低风险


使用场景

Cookie:一般在需要维持登录状态的场景建议使用Cookie。

localStorage:通常在需要长期持久化记住用户信息时,(如用户偏好设置主题、字体大小)。

sessionStorage: 适合临时会话数据,一般用于单页应用,就比如掘金经常叫我们填写飞书表单链接一样,当我们退出之后没提交的表单被删除了。

易用性

local和sessionStorage相较于cookie 更易用。

Cookie 的操作复杂:读取需要解析字符串,需拼接字符串,且属性(Expires、Path 等)需手动设置。local和sessionStorage提供直接的键值对。且存储容量更大,不自动参与http请求那么其就无性能的消耗等。

总结

简单来说就是Cookie 给服务器用,localStorage 给持久前端用,sessionStorage 给临时前端用。


https://www.zuocode.com