Session、Cookie和Token的主要区别

HTTP协议本身是无状态的。什么是无状态呢,即服务器无法判断用户身份,因此需要借助Session、Cookie、Token来确认用户身份信息。

一、什么是Cookie

Cookie是由Web服务器保存在用户浏览器上的小文件(key-value格式),包含用户相关的信息。客户端向服务器发起请求,如果服务器需要记录该用户状态,就使用response向客户端浏览器发送一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户身份。

二、什么是Session

Session是依赖Cookie实现的,Session是服务器端对象。Session 是浏览器和服务器会话过程中,服务器分配的一块储存空间。服务器默认为浏览器在Cookie中设置 sessionid,浏览器在向服务器请求过程中传输的Cookie 包含 sessionid ,服务器根据 sessionid 获取出会话中存储的信息,然
后确定会话的身份信息。

三、什么是Token

Token的引入:Token是在客户端频繁向服务端请求数据,服务端频繁的去数据库查询用户名和密码并进行对比,判断用户名和密码正确与否,并作出相应提示,在这样的背景下,Token便应运而生。
Token的定义:Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。
使用Token的目的:Token的目的是为了减轻服务器的压力,减少频繁的查询数据库,使服务器更加健壮。
Token是在服务端产生的。如果前端使用用户名/密码向服务端请求认证,服务端认证成功,那么在服务端会返回 Token 给前端。前端可以在每次请求的时候带上 Token 证明自己的合法地位。

四、Session与Cookie的区别

① 存储位置与安全性:Cookie数据存放在客户端上,安全性较差,Session数据放在服务器上,安全性相对更高。
② 存储空间:单个Cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个Cookie,Session无此限制。
③ 占用服务器资源:Session一定时间内保存在服务器上,当访问增多,会占用服务器性能,考虑到服务器性能方面,应当使用Cookie。

五、Session与Token的区别

① Session机制存在服务器压力增大,CSRF跨站伪造请求攻击,扩展性不强等问题。
② Session存储在服务器端,Token存储在客户端。
③ Token提供认证和授权功能,作为身份认证,Token安全性比Session好。
④ Session这种会话存储方式方式只适用于客户端代码和服务端代码运行在同一台
服务器上,Token适用于项目级的前后端分离(前后端代码运行在不同的服务器下)。

你可能感兴趣的:(计算机网络,session,cookie,token)