客户端存储技术

1,039 阅读2分钟

导言

就简单写一下

cookie

前言

前期http最大的问题之一是如何管理状态。后来cookie的出现解决了这个问题。

作用

cookie 是纯文本,没有可以执行的代码。存储数据,当用户访问了某个网站的时候,我们就可以通过 cookie来向访问者的电脑上存储数据,或者某些网站为了辨别用户身份,进行 session 追踪本地用户终端上的数据。

特征

  1. cookie不能跨域
  2. 大小一般为 4kb
  3. 一个域名下的 cookie个数一般为 20个

使用

用户第一次登录后,把 用户名和密码传输给服务器, 服务器接收到这个数据,做 hash加密后, 把加密后的数据和一个随机数一起当做 session 的 session_id,并把这个 session_id 作为 cookie 传输给浏览器 , 然后浏览器每次请求, 都需要携带上这个 cookie , 这样就可以保持登录状态了。

cookie的属性

  1. 过期时间 expires
  2. httpOnly 为了防止 客户端使用 js 去访问 httpOnly
  3. sameSite 为了防止 CSRF 攻击

localStorage(本地存储)

特点

  1. 生命周期 :持久化的本地存储,除非主动删除,否则数据不会过期
  2. localStorage 不能跨域
  3. 大小一般是 5MB

API

  • localStorage.setItem('username','zs')
  • localStorage.getItem('username')
  • localStorage.removeItem('username') 一次性删除
  • localStorage.clear()

sessionStorage

会话存储

特点

  1. sessionStorage 对象的数据只保持到浏览器关闭。 在浏览器关闭后会销毁
  2. 存储在 sessionStorage 中的数据可以跨越页面刷新而存在
  3. 也就说只要这个浏览器窗口没有关闭,即使刷新页面或者进入同源的另一个页面,数据仍然存在

使用

可以把 CSRF 中为了识别用户 服务器随机产生出的 token 放到 sessionStorage中

indexedDB

indexedDB 是基于 js 的面向对象的数据库。