cookie | localstorage | sessionStorage | IndexedDB | |
---|---|---|---|---|
期限 | 根据过期时间。如果没有指定过期时间,则被移除之前一直有效。 | 移除之前一直有效。 | 当前页面关闭之前一直有效。 | 移除之前一直有效。 |
规则 | 在有效期内,关闭页面不会消失,随http请求传送至后端服务器。 | 只要这个浏览器窗口没有关闭,而是刷新或者进入了另一个同源页面,sessionstorage都不会消失,但是在关闭了浏览器窗口之后就会被销毁,同时独立的打开同一个窗口同一个页面,sessionstorage也是不一样的。 | 关闭页面和浏览器也不会消失,除非主动删除 | |
存储大小 | 4kb | 5MB | 5MB | 桌面应用50MB,移动设备5MB。可以在用户许可下存储更多。 |
存储内容类型 | 字符串 | 一般都只能保存字符串类型,对于复杂对象可以采用json的stringify和parse方法来做处理 | 一般都只能保存字符串类型,对于复杂对象可以采用json的stringify和parse方法来做处理 | |
应用场景 | 解决http无状态问题,代表用户处于登录状态 | sessionstorage常用于敏感账号一次性登陆,如关闭当前页面再次打开页面就要重新登陆 | localstorage常用于长期登录(+判断用户的登录状态),适合长期保存在本地的数据 | |
作用域 | 独立域名或子域名 | 独立域名。子域名不可以。 | 独立域名,每个浏览器tab页 | 独立域名,子域名不可以 |
存储位置 | 客户端,与服务器通讯 | 客户端,不与服务端进行通信客户端,不与服务端进行通信 | 客户端,不与服务端进行通信客户端,不与服务端进行通信 | |
数据类型 | 键值对。键值都是字符串。 | 键值对。键值都是字符串。 | 键值对。键值都是字符串。 | 键值对。支持许多数据类型,并支持复杂的查询。 |
可强制使用HTTPS | 是 | 否 | 否 | 否 |
是否可以阻止JS访问 | 是 | 否 | 否 | 否 |
是否在每个请求中自动发送 | 是(根据请求的域名和路径) | 否 | 否 | 否 |