http:无状态协议;即每次服务端接收到客户端的请求时,都是一个全新的请求,服务器并不知道客户端的历史请求记录;Session 和 Cookie 的主要目的就是为了弥补 HTTP 的无状态特性。
①.Session(源于服务器) JSession(源于客户端) 同 cookie(源于服务器)
客户端向服务器发送一次请求,服务器会为此请求开辟一个内存空间(集合),这个对象便是Session对象(开辟了一块 Session 空间(创建了Session对象)),存储此次请求;
服务器session对象会为该请求生成一个sessionId,并根据客户端的响应头“**Set-Cookie:JSESSIONID=XXXXXXX **”命令发出要求设置cookie的回应;客户端收到响应后,在本机客户端设置了一个 **JSESSIONID=XXXXXXX **的 Cookie 信息,(客户端存储cookie信息)该 Cookie 的过期时间为浏览器会话结束;
接下来,客户端每次发请求(自身的Jsession,含带在服务器设置后的cookie,以及请求对应的sessionId),
服务器读取cookie对应的请求,查找该条请求的Jsession,获取到对应的sessionId;当接收到客户端发出的 HTTP 请求时,服务器可以发送带有响应的 Set-Cookie标头,Cookie 通常由浏览器存储,然后将 Cookie 与 HTTP 标头一同向服务器发出请求。
②cookie (源于服务器)
HTTP 协议中的 Cookie 包括 Web Cookie 和浏览器 Cookie;它是服务器发送到Web 浏览器的一小块数据。服务器发送到浏览器的 Cookie,浏览器会进行存储,并与下一个请求一起发送到服务器。通常,它用于判断两个请求是否来自于同一个浏览器,例如用户保持登录状态.
有两种类型的Cookies,一种是 Session Cookies,一种是 Persistent Cookies,如果 Cookie 不包含到期日期,则将其视为会话 Cookie。会话 Cookie 存储在内存中,永远不会写入磁盘,当浏览器关闭时,此后 Cookie 将永久丢失。如果 Cookie 包含有效期 ,则将其视为持久性 Cookie。在到期指定的日期,Cookie 将从磁盘中删除。
③Json Web Token
Json Web Token 的简称就是 JWT;JWT 和 Session Cookies 就是用来处理在不同页面之间切换,保存用户登录信息的机制。
JWT 主要由三部分组成,每个部分用 . 进行分割,各个部分分别是
[if !supportLists]· [endif]Header
[if !supportLists]· [endif]Payload
[if !supportLists]· [endif]Signature