随着网页的应用不断发展,客户端存储被提上了日常,最初的解决方案就是网景公司提出的表单Cookie。
Cookie
Cookie最初用于存储会话信息,该规范要求服务器发送一个持有会话信息 Set-Cookie的HTTP头作为响应的一部分,响应头通常长这样
HTTP/1.1 200 OK
Content-type: text/html
Set-Cookie: name=value
Other-header: other-header-value
限制
Cookie一般特定的域绑定,当设置了Cookie,它会和请求一起发送到创建它的同一个域,这个限制保证了信息存储在Cookie中,只能由接收者访问,不能被其他的域访问。
浏览器通常最大容纳Cookie是以下
总计300条Cookie
每条Cookie最大容纳4096字节
每个域最多容纳20条Cookie
每个域最多容纳81920字节的Cookie
Cookie的构成部分
Cookie由以下部分构成
name:唯一的名识别Cookie,区分大小写,Cookie名必须被URL编码
Value:存储在Cookie的在字符串值,必须被URL编码
domain:Cookie有效的域名,所有从资源发送到该域名的都将会包含Cookie信息
path:Cookie发送到服务器指定域名的路径下
Expiration:时间戳指示Cookie应该在何时被删除
Secure flag:指定后,Cookies信息只会被发送到使用了SSL连接
web存储
现代Web Storage是Web应用规范的第二个版本,用两个主要目标:
提供除Cookie外的存储会话数据的方式
提供可持续大量存储会话数据机制
Web Storage 2版本定义了两个对象,localStorage:持久化存储机制,sessionStorage:会话存储机制
Storage类型
Storage类型被设计了键值对存储方式,提供了以下的操作方法
clear():移除所的有值,火狐浏览器不能实现
getItem(name):传入值的名字获取值
key(index):获取指定索引值的名称
removetem(name):移除指定名称的键值对
setItem(name, value):存储键值对
注意:Storage类型只存储字符串类型数据,不是字符串类型的字符串数据会被自动转为字符串,使用时记得转回需要的类型
基本使用
// 存储数据
localStorage.setItem("name", "华为");
// 通过属性存储数据
localStorage.slogan = "遥遥领先";
// 读取数据
let name = localStorage.getItem("name");
// 通过属性读取数据
let slogan = localStorage.slogan;
console.log(name);
console.log(slogan);