浏览器中的cookie是一段小型的文本文件,根据不同浏览器对cookie的实现,大概都是在4kb大小。cookie是由键值对构成,键值对中间用分号和空格来隔开。
虽然cookie是存储在浏览器端的,但是大部分时候,我们是在服务器端对cookie进行设置。我们可以通过在HTTP返回体里面,通过设置 Set-Cookie值的头部,来告诉浏览器端需要存储的cookie
到浏览器
可以访问当前域的cookie,也可以访问父域的cookie。
一个完整的cookie,是由这几个属性构成的。
Name和Value是在设置cookie的时候,必须填写的属性。Domain是表示的作用域,如果不设置,就是当前的文档域。Expires是时间戳,Max-Age是毫秒数为单位的数值。Secure只有当协议是HTTPS时才生效,默认是false。想标识一个唯一的cookie值,需要name、domain跟path的组合。
cookie的作用域
如果设置cookie的path='/' 都为根目录,当设置cookie的domain为http://xxx.aaa.com的时候,访问http://xxx.aaa.com的时候,会带上cookie。当设置domain为父域:.http://aaa.com的时候,访问子域的时候,都会带上cookie。路径同。
读取:
一段小型文本文件转化为json对象
增删改查
删除
缺陷:
流量代价:cookie只要满足作用域和作用路径,每次请求都带上cookie,所以会产生巨大的流浪代价。
安全性问题:cookie是明文传递的
大小限制:4k左右,功能有限。
HTML5提供了storage这种客户端存储的替代方案。根据有效期和作用域的不同,storage分为localStorage和sessionStorage。大小:大部分浏览器都是5M左右。
localStorage -> 有效期:永久 作用域:在localStorage的基础上,再加上窗口的限制。浏览器不同的窗口是不共享sessionStorage的
sessionStorage -> 有效期 :浏览器的会话时间 作用域:协议、主机名、端口号来决定的。
可以简单的将storage理解为一个对象。
读取:localStorage.name
添加/修改:localStorage.name='wulongcha'到目前为止浏览器支持的storage的类型只有string
删除:delete localStorage.name
API:调用API进行增删查改好处:可以向下兼容,如果浏览器不支持storage的话,可以用cookie来模拟。
获取键值对数量:localStorage.length
读取:localStorage.getItem('name'),localStorage.key(i)
添加/修改:localStorage.setItem('name','wanlaiqiu')
删除对应键值:localStorage.removeItem('name')
删除所有数据:localStorage.clear()