JAVA:Token、Session、Cookie到底是什么?

一、前言

  首先我们要知道 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
原理:
①.服务器在响应客户端请求时,会在HTTP头中设置Set-Cookie字段,将Cookie信息发送给客户端。
②.客户端浏览器会保存这些Cookie信息,并在后续的请求中通过HTTP头中的Cookie字段将其发送给服务器。
③.服务器根据接收到的Cookie信息来识别用户身份、保持会话状态或进行其他处理。

特点区别
Cookie是存储在客户端的,因此可能会被用户删除或篡改。
Cookie有大小限制(通常为4KB),且不同浏览器对Cookie数量的限制也不同。
Cookie可以通过设置HttpOnly、Secure等属性来提高安全性

在这里插入图片描述

Token
原理:
①.客户端向服务器发送登录请求,服务器验证用户身份后生成一个Token。
②.这个Token包含了用户的身份信息(如用户ID、权限等)和签名信息,用于确保Token的完整性和真实性
③.服务器将Token返回给客户端,客户端将其保存在本地(如localStorage)。
④.在后续的请求中,客户端会将Token作为请求头的一部分发送给服务器,服务器验证Token的有效性后执行相应的操作。

特点区别
Token是无状态的,即服务器不需要保存每个用户的Token信息。
Token通常具有时效性,过期后需要重新获取。
Token可以包含用户信息和权限信息,便于进行访问控制和资源授权。

在这里插入图片描述

三、总结

  Token主要用于用户身份认证和访问控制,具有无状态、时效性等特点。Session用于在服务器端保持用户的状态信息,通过Session ID在客户端和服务器之间建立会话连接。Cookie则用于在客户端和服务器之间传递数据,如用户身份标识、会话状态等

  Token、Cookie和Session在Web开发中各有其独特的作用和适用场景。Token适用于需要无状态认证和授权的场景,Cookie适用于需要用户身份识别和会话管理的场景,而Session则更适合于服务端需要存储和管理用户会话信息的场景。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奋斗的狍子007

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值