导言
就简单写一下
cookie
前言
前期http最大的问题之一是如何管理状态。后来cookie的出现解决了这个问题。
作用
cookie 是纯文本,没有可以执行的代码。存储数据,当用户访问了某个网站的时候,我们就可以通过 cookie来向访问者的电脑上存储数据,或者某些网站为了辨别用户身份,进行 session 追踪本地用户终端上的数据。
特征
- cookie不能跨域
- 大小一般为 4kb
- 一个域名下的 cookie个数一般为 20个
使用
用户第一次登录后,把 用户名和密码传输给服务器, 服务器接收到这个数据,做 hash加密后, 把加密后的数据和一个随机数一起当做 session 的 session_id,并把这个 session_id 作为 cookie 传输给浏览器 , 然后浏览器每次请求, 都需要携带上这个 cookie , 这样就可以保持登录状态了。
cookie的属性
- 过期时间 expires
- httpOnly 为了防止 客户端使用 js 去访问 httpOnly
- sameSite 为了防止 CSRF 攻击
localStorage(本地存储)
特点
- 生命周期 :持久化的本地存储,除非主动删除,否则数据不会过期
- localStorage 不能跨域
- 大小一般是 5MB
API
- localStorage.setItem('username','zs')
- localStorage.getItem('username')
- localStorage.removeItem('username') 一次性删除
- localStorage.clear()
sessionStorage
会话存储
特点
- sessionStorage 对象的数据只保持到浏览器关闭。 在浏览器关闭后会销毁
- 存储在 sessionStorage 中的数据可以跨越页面刷新而存在
- 也就说只要这个浏览器窗口没有关闭,即使刷新页面或者进入同源的另一个页面,数据仍然存在
使用
可以把 CSRF 中为了识别用户 服务器随机产生出的 token 放到 sessionStorage中
indexedDB
indexedDB 是基于 js 的面向对象的数据库。