cookie、localStorage、sessionStorage理解

浏览器存储的方式主要有三种:cookie、localStorage和sessionStorage。
查阅MDN文档

HTTP Cookie(也叫Web cookie或者浏览器Cookie)是服务器发送到用户浏览器并保存在浏览器上的一块数据,它会在浏览器下一次发起请求时被携带并发送到服务器上。比较经典的,可以它用来确定两次请求是否来自于同一个浏览器,从而能够确认和保持用户的登录状态。Cookie的使用使得基于无状态的HTTP协议上记录稳定的状态信息成为了可能。

Cookie主要用在以下三个方面:

1.会话状态管理(如用户登录状态、购物车)
2.个性化设置(如用户自定义设置)
3.浏览器行为跟踪(如跟踪分析用户行为)

Cookie可用于客户端数据的存储,在没有其它存储办法时,使用这种方式是可行的,但随着现在浏览器开始支持各种各样的存储方式而逐渐被废弃。由于服务器指定Cookie以后浏览器的每次请求都会携带Cookie数据,这会带来额外的性能负担(尤其是在移动环境下)。新的浏览器API已经允许开发者直接在本地存储数据,如可以使用Web storage API (本地存储localStorage和会话存储sessionStorage)和IndexedDB。

创建cookie
当服务器收到HTTP请求时,可以在响应头里面增加一个Set-Cookie头部。浏览器收到响应之后会取出Cookie信息并保存,之后对该服务器每一次请求中都通过Cookie请求头部将Cookie信息发送给服务器。另外,Cookie的过期时间、域、路径、有效期、站点都可以根据需要来指定。

Set-Cookie: <cookie名称>=<cookie值>

创建cookie时可以制定cookie的键值对、过期时间(expires)或有效期(Max-age)、作用域(domain和path)。

在JS代码中可以通过document.cookie来创建新的cookie或访问cookie。

localStorage&sessionStorage

localStorage 属性允许你访问一个localStorage对象。localStorage与sessionStorage 相似。不同之处在于,存储在 localStorage里面的数据没有过期时间expiration time),而存储在 sessionStorage里面的数据会在浏览器会话(browsing session)结束时被清除,即浏览器关闭时。

应该注意的是,无论是localStorage还是sessionStorage中保存的数据都仅限于该页面的协议。

myStorage = localStorage;

使用Storage.setItem()方法往里面添加一个数据项。

localStorage.setItem('myCat', 'Tom');
本文总阅读量