浏览器相关-存储
关于存储的问题都会涉及到三个问题:
- 存储场所
- 存储空间
- 存储时间
(在哪儿存储,多少数据,到什么时候)这些特性决定了不同方案的用途
cookie
WHAT
Cookie指某些网站为了辨别用户身份而储存在用户本地终端上的数据(通常经过加密)。 cookie是服务端生成,客户端进行维护和存储。通过cookie,可以让服务器知道请求是来源哪个客户端,就可以进行客户端状态的维护,比如登陆后刷新,请求头就会携带登陆时response header中的set-cookie,Web服务器接到请求时也能读出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
- cookie不够大,各浏览器的cookie每一个
HOW
第一次访问网站的时候,浏览器发出请求,服务器响应请求后,会在响应头里面添加一个Set-Cookie选项,将cookie放入到响应请求中,在浏览器第二次发请求的时候,会通过Cookie请求头部将Cookie信息发送给服务器,服务端会辨别用户身份,另外,Cookie的过期时间、域、路径、有效期、适用站点都可以根据需要来指定。
cookie的生成方式主要有两种:
http response header
中的set-cookie
Set-Cookie: id=a3fWa; Expires=Wed, 21 Oct 2019 22:28:00 GMT;//可以指定一个特定的过期时间(Expires)或有效期(Max-Age)
js中通过
document.cookie
可以读写cookie,以键值对的形式展示document.cookie = "userName=mrrs878" document.cookie = "age=23"
常用后缀及其含义:
| 属性 | 作用 | |