经典面试题:有了 cookie 为什么还要 localStorage?
cookie 与 localStorage 两者的区别
·
面试的时候,被问到这样一个问题,我们通过后端返回来的 token
为什么是存储在 localStorage
而不是存储在 cookie
中?
首先token
就是一个字符串,而使用 cookie
的话之所以使用 localStorage
存储 token
,而不是使用 cookie
,这可能基于以下几个方面考虑:
- 前后端分离架构: 在一些现代的
Web
应用程序中,前端和后端通常是通过API
进行通信的,而不是使用传统的服务器端渲染。在这种情况下,前端可能是一个独立的应用程序,如基于JavaScript
的单页应用或移动应用程序。由于前端和后端是分离的,Cookie
在这种架构中不太容易管理,因为跨域请求可能会遇到一些限制。localStorage
提供了一种更方便的解决方案,前端应用程序可以直接访问和管理存储在本地的令牌;- 安全性需求: 在某些情况下,开发者可能认为将令牌存储在
Cookie
中存在一些安全风险,尤其是在面对跨站脚本攻击XSS
时。使用localStorage
可以减少某些安全风险,因为LocalStorage
中的数据不会自动发送到服务器,且可以通过一些安全措施(如加密)来增强数据的安全性;- 令牌过期处理: 使用
localStorage
存储令牌可以让令牌在浏览器关闭后仍然保持有效,这在某些应用场景下是有用的。例如,用户可能关闭了浏览器,然后再次打开时仍然保持登录状态,而不需要重新输入凭据;
cookie 和 localStorage 的区别
Cookie
和 LocalStorage
是两种用于在浏览器中存储数据的机制,它们在以下方面有一些区别:
- 存储容量:
Cookie
的存储容量通常较小,每个Cookie
的大小限制在几KB
左右。而LocalStorage
的存储容量通常较大,一般限制在几MB
左右。因此,如果需要存储大量数据,LocalStorage
更适合;- 数据发送:
Cookie
在每次HTTP
请求中都会自动发送到服务器,这使得Cookie
适合用于在客户端和服务器之间传递数据。localStorage
的数据不会自动发送到服务器,它仅在浏览器端存储数据,因此LocalStorage
适合用于在同一域名下的不同页面之间共享数据;- 生命周期:
Cookie
可以设置一个过期时间,使得数据在指定时间后自动过期。而LocalStorage
的数据将永久存储在浏览器中,除非通过 JavaScript 代码手动删除;- 安全性:
Cookie
的安全性较低,因为Cookie
在每次HTTP
请求中都会自动发送到服务器,存在被窃取或篡改的风险。而LocalStorage
的数据仅在浏览器端存储,不会自动发送到服务器,相对而言更安全些;
小结:
Cookie
适合用于在客户端和服务器之间传递数据、跨域访问和设置过期时间,而 LocalStorage
适合用于在同一域名下的不同页面之间共享数据、存储大量数据和永久存储数据。
更多推荐
所有评论(0)