session机制是一种服务端机制,服务器使用一种类似散列表的结构来保存信息。当程序需要为某个客户端的请求创建一个session的时候,服务器首先检查这个客户端里的请求是否已包含了一个session标识-sessionId,如果已包含一个sessionId,则说明已经为此客户端创建过session,服务器就按照sessionId把session检索出来使用。如果客户端请求不包含sessionId,则为此客户端创建 一个session并且声明一个与此session相关联的sessionId,sessionId是一个既不会重复,又不会被找到规律被仿造的字符串(服务器会自动创建)这个sessionId会在本次响应中返回给客户端保存。
cookie实际上是一小段的文本信息,cookie是由服务器产生的。当浏览器第一次访问服务端时,服务器此时不知道访问者的身份,会创建一个独特的身份标识数据,格式为key-value,放到set-cookie字段里,随着响应报文发送给浏览器。浏览器看到有set-cookie字段以后就知道这是服务器给的身份标识,保存起来,下次请求会将此key=value放入到cookie中发送给服务端。服务端收到请求后发现cookie中有值,就能根据此值识别用户身份。
在服务端经过base64URL编码后传给在客户端,每次客户请求的时候都会带上这一段信息,因此服务端拿到此段信息解密后就知道此用户是谁了,这个方法叫做JWT(JSON Web Token)。token类似一个令牌,无状态的。服务端所需的信息被base64编码后放到token中,服务器可以直接编码出其中的数据。
session和cookie的区别
session和token的区别