Http协议是无状态协议
,客户每次读取web页,服务器都会打开新的回话,服务器端不会自动维护客户端的上下文信息。
Session:即一种保存上下文信息机制,将客户,变量值保存至服务器端,通过sessionID来区分,session以cookie或url重写为基础,默认使用cookie实现,通过响应头的 Set-Cookie:JSESSIONID=XXX命令,向客户端发送要求设置 Cookie 的响应; 客户端收到响应后,在本机客户端设置了一个 JSESSIONID=XXX的 Cookie 信息,该 Cookie 的过期时间为浏览器会话结束;
之后客户端每次向同一个网站发送请求时,请求头都会带上cookie信息(包含sessionId),服务器通过读取请求头中的cookie信息,获取名为JESSIONID的值,得到此次请求的sessionId。
Session缺点
A服务器存储了session,就是做了负载均衡后,假如一段时间内A的访问量激增,会转发至B服务器进行访问,但是B服务器没有存储A的session,导致session失效
cookie:
http协议中的Cookie包括web cookie
和浏览器 cookie
服务器向浏览器发送cookie:通过http响应报文实现
浏览器保存cookie:允许开发者在JavaScript中使用document.cookie来存取cookie。
之后每次http请求浏览器都会将cookie发送至服务器端
- session cookie 保存至内存中,不会写入硬盘;浏览器关闭Cookie永久丢失
- persistent cookies 包含
有效期
,在指定的日期Cookie从磁盘中删除
Session Cookies
回话 Cookies
,在session cookies中,用户的登录状态会保存在服务器
的内存
中,当用户登录时,session就被服务器安全创建。每次请求时,服务器都会从回话Cookie中读取SessionId,如果服务器的数据和读取的SessionId相同,那服务器就会发送响应给浏览器,允许用户登录
Json Web Tokens
JWT,通常称为Json
令牌;它是RFC 7519
中定义的用于安全将信息作为json对象
进行传输的一种形式。JWT中的存储的信息经过数字签名
,可以信任。可以使用HMAC算法或使用RSA/ECDSA的公用、专用密钥对JWT进行签名。
CSDN
localStorage生命周期是永久,若用户删除在浏览器中的localstorage信息,否则会永远存储于浏览器内。存放数据大小为5MB,仅保存在客户端(浏览器),不参与服务器端。
sessionStorage仅在当下的会话有效,关闭网页或浏览器后被清除;存放数据大小为5KB,同样不参与服务器端通信。
方法:
localStorage和sessionStorage
localStorage.setItem(“key”,“value”) 以“key”为名称存储一个值“value”
localStorage.getItem(“key”) 获取名称为“key”的值
localStorage.removeItem(“key”) 删除名称为“key”的信息。
localStorage.clear() 清空localStorage中所有信息