浏览器相关-存储

2020-04-02 22:49:3910/1/2021, 3:34:43 AM

关于存储的问题都会涉及到三个问题:

  1. 存储场所
  2. 存储空间
  3. 存储时间

(在哪儿存储,多少数据,到什么时候)这些特性决定了不同方案的用途

cookie

  • WHAT

    Cookie指某些网站为了辨别用户身份而储存在用户本地终端上的数据(通常经过加密)。 cookie是服务端生成,客户端进行维护和存储。通过cookie,可以让服务器知道请求是来源哪个客户端,就可以进行客户端状态的维护,比如登陆后刷新,请求头就会携带登陆时response header中的set-cookie,Web服务器接到请求时也能读出cookie的值,根据cookie值的内容就可以判断和恢复一些用户的信息状态。

    cookie的原理

  • WHY

    cookie的本职工作并非进行本地存储,而是维持状态。因为HTTP协议是无状态的,HTTP协议自身不对请求和响应之间的通信状态进行保存,通俗来说,服务器不知道用户上一次做了什么,这严重阻碍了交互式Web程序的实现,于是就诞生了cookie。他就是用来绕开HTTP的无状态性的“额外手段”之一。服务器可以设置或读取cookie中包含信息,借此维护用户跟服务器会话的状态

    cookie的缺陷:

    • cookie不够大,各浏览器的cookie每一个name=value的value值大概在4k,所以4k并不是一个域名下所有的cookie共享的,而是一个name的大小。
    • 过多的 Cookie 会带来巨大的性能浪费,每次请求都会携带cookie
    • 安全性较差,由于在HTTP请求中的Cookie是明文传递的,所以安全性成问题,除非用HTTPS
  • HOW

    第一次访问网站的时候,浏览器发出请求,服务器响应请求后,会在响应头里面添加一个Set-Cookie选项,将cookie放入到响应请求中,在浏览器第二次发请求的时候,会通过Cookie请求头部将Cookie信息发送给服务器,服务端会辨别用户身份,另外,Cookie的过期时间、域、路径、有效期、适用站点都可以根据需要来指定。

    cookie的生成方式主要有两种:

    1. http response header中的set-cookie

      Set-Cookie: id=a3fWa; Expires=Wed, 21 Oct 2019 22:28:00 GMT;//可以指定一个特定的过期时间(Expires)或有效期(Max-Age)
      
    2. js中通过document.cookie可以读写cookie,以键值对的形式展示

      document.cookie = "userName=mrrs878"
      document.cookie = "age=23"
      

    常用后缀及其含义:

    | 属性 | 作用 | |