简单介绍session,cookie,token以及区别

时间:2023-01-04 01:01:11

Cookie简介

①.是由服务器发给客户端的特殊信息,以文本的形式存放在客户端

②.客户端再次请求的时候,会把Cookie回发给服务器

③.服务器接收到后,会解析Cookie生成与客户端相对应的内容

Cookie的设置与发送过程分以下四步:(cookie的实现方式)

客户端发送一个http请求到服务端

服务端发送一个http响应到客户端,其中包括了Set-Cookie的头部

客户端再发送一个http请求到服务器端,包括了cookie头部

服务器端发送一个http响应到客户端

Session简介

①.服务器端的机制,在服务器上保存的信息

②.解析客户端请求并操作session id ,按需保存状态信息

Session的实现方式

使用cookie实现

服务器给每一个session分配唯一的JSessionID,并通过cookie发送给客户端,当客户端发起新的请求时候,将在cookie头中携带JSessionID,这样服务器能够找到客户端对应的session

使用URL地址回写

当服务器发送给浏览器页面的所有链接中,都携带JSessionID的参数,这样客户端点击任何一个链接,都会把JSessionID带回服务器,如果直接在浏览器输入服务端资源的URL来请求该资源,那么session是请求不到的

区别

session就是会话,是存储在服务器端,有一个用户访问网站,服务器就会开一块区域来保存session信息,比如sessionId,登录信息等,可以自定义保存各种会话相关的信息。可以理解为一个状态列表,拥有一个唯一识别符号sessionId,通常存放于cookie中,依赖cookie。服务器收到cookie后解析出sessionId,再去session列表中查找,才能找到相应session。

cookie是客户端浏览器上的,也可以理解为浏览器端,也是用来保存各种自定义信息,装有sessionId浏览器通常会自动添加。有了cookie,浏览器在下次访问网页时会自动附带上它发送给服务器,服务器通过识别 cookie 并鉴定出是哪个用户,然后再判断用户是否是登录状态,进而返回对应的响应。

不过cookie容量小,现在被h5的缓存替代了,就是localStorage和sessionStorage,cookie一般用不到了。

token是登录的标识,是我们自己定义的一种业务信息,可以存到session、cookie、h5缓存、redis,根据你业务的需要来生成和存放,用户信息都被加密到token中,服务器收到token后解密就可知道是哪个用户,需要开发者手动添加。

附加一道面试题

我们怎样利用 Cookies 保持状态呢?

当客户端第一次请求服务器时,服务器会返回一个响应头中带有 Set-Cookie 字段的响应给客户端,用来标记是哪一个用户,客户端浏览器会把Cookies 保存起来。当浏览器下一次再请求该网站时,浏览器会把此 Cookies 放到请求头一起提交给服务器,Cookies 携带了 Session ID 信息,服务器检查该 Cookies 即可找到对应的 Session 是什么,然后再判断 Session 来以此来辨认用户状态。