cookies,sessionStorage和localStorage的区别?
特性 | Cookie | localStorage | sessionStorage |
---|---|---|---|
定义 | Cookie是存储在客户端的小型文本文件,可以包含若干键值对,每个键值对可以设置过期时间(默认过期时间为关闭浏览器时)。 | HTML5 提供的在客户端存储数据的新方法,没有时间限制的数据存储。 | HTML5 提供的在客户端存储数据的新方法,针对一个 session 的数据存储。 |
数据的生命周期 | 一般由服务器生成,可设置失效时间。如果在浏览器端生成Cookie,默认是关闭浏览器后失效。 | 除非被清除,否则永久保存。 | 仅在当前会话下有效,关闭页面或浏览器后被清除。 |
存放数据大小 | 4K左右 | 一般为5MB | 同localStorage |
与服务器通信 | 每次都会携带在HTTP头中,如果使用cookie保存过多数据会带来性能问题。 | 仅在客户端(即浏览器)中保存,不参与和服务器的通信 | 同localStorage |
作用域 | js是无法读取和修改 httponly cookies,当然也不能设置 cookie 为 httponly,这只能通过服务器端去设置。主要是为了提供一个安全措施来帮助阻止通过 JavaScript 发起的跨站脚本攻击 (XSS) 窃取 cookie 的行为。 | 只要在相同的协议、相同的主机名、相同的端口下,就能读取/修改到同一份localStorage数据。 | sessionStorage比localStorage更严苛一点,除了协议、主机名、端口外,还要求同一窗口。 |
使用场景 | http请求,用户登录。 | 离线存储(历史记录) | 用户登录授权的验证 |
在GitHub上编辑 (opens new window)
上次更新: 2/23/2022, 5:36:03 PM