cookie ,sesion和token的区别

一、前言

要知道我们访问网站都是通过HTTP协议或HTTPS协议来完成的,HTTP协议它本身是无状态的协议(即:服务器无法分辨哪些请求是来源于同个客户)。而业务层面会涉及到客户端与服务器端的交互(同网站下多个页面间能共享数据),此时服务器端必须要保持会话状态,这样才能进行用户身份的鉴别。 由于HTTP无状态的特性,如果要实话客户端和服务器端的会话保持,那就需要其它机制来实现,于是Cookie和Session应运而生。 cookie主要是网站用于在浏览器临时存放的数据,包括浏览器缓存数据以及服务器设定的一些数据,主要存放在浏览器端。 session主要用于保存会话数据,一般存储在服务器端,同时每一条session对用一个sessionID,sessionID是存放在浏览器的cookie中。 传统上的会话登陆和鉴权主要用session加cookie实现,随着分布式系统的快速演进,尤其是微服务的应用,token+cookie的授权访问机制得到亲睐,通常在用户登录后,服务器生成访问令牌(Access token),浏览器存储cookie中,在每次请求资源时都会在请求头中带上token,用于服务器授权访问使用。

二、cookie和session的用途

通常情况下session和cookie是搭配在一起使用的。

客户端请求:cookie/token

 

1、cookie请求过程

 

 

2、token请求过程

 

 

 tooken机制下的认证流程

主要需要身份鉴权

 

 三、cookie/token/session

cookie:保存在浏览器中,有大小限制,有状态;

session:保存在服务器中,服务器有资源开销;

Token:客户端可以将Token保存到任何地方,无限制,无状态,利于分布式部署。

 

posted @ 2022-03-22 22:11  一路向北转南  阅读(82)  评论(0)    收藏  举报