一、前言
首先我们要知道 HTTP 协议是无状态的,所谓的无状态就是客户端每次想要与服务端通信,都必须重新与服务端链接,意味着请求一次客户端和服务端就连接一次,下一次请求与上一次请求是没有关系的。
这种无状态的方式就会存在一个问题:如何判断两次请求的是同一个人?就好比用户在页面 A 发起请求获取个人信息,然后在另一个页面同样发起请求获取个人信息,我们如何确定这俩个请求是同一个人发的呢?
为了解决这种问题,我们就迫切需要一种方式知道发起请求的客户端是谁?此时cookie、token、session 就出现了,它们就可以解决客户端标识的问题,在扩大一点就是解决权限问题。
它们就好比让每个客户端或者说登录用户有了自己的身份证,我们可以通过这个身份证确定发请求的是谁!从而知道用户登录的信息。
二、Session、Cookie、Token原理与区别
Session
原理:
①.当用户访问网站时,服务器会为用户创建一个Session对象,并在服务器内存中为其分配一个唯一的Session ID。
②.服务器将Session ID通过Cookie或URL重写等方式发送给客户端。
③.客户端在后续的请求中会携带Session ID,服务器根据Session ID找到对应的Session对象,从而获取用户的状态信息。
特点区别:
Session是服务器端的存储方式,可以跨请求共享数据。
Session ID在客户端和服务器之间传递,是建立会话连接的关键。
Session有生命周期,超过设定时间后会被服务器自动销毁。
Cookie<