Session、Cookie、Token总结(面试)

本文总结了HTTP无状态协议下Session、Cookie和Token的作用。Cookie是浏览器端存储用户信息的方式,Session是服务器端存储用户状态的对象,两者结合实现用户身份认证。Token(JWT)解决了跨服务器时Session不可见的问题,通过加密算法确保用户登录状态的安全传递。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 引入:

HTTP是无状态协议,无法记得上一次连接的信息,比如记不得用户是否已经登陆等信息。

而Session、Cookie、Token便是对HTTP无状态的一种补充;

2.Cookie:

Cookie是浏览器对于一些信息的键值对形式保存,当浏览器关闭,Cookie也就删除了;

3. Session:

Session是服务器中保存的对象(Tomcat保存在ConcurrentHashMap<Session>中),生成之后在返回Http response时,会发送sesionId给浏览器(响应头里会有Set-Cookie:JSESSIONID=XXXXXXX ),浏览器收到response后会在Cookie里保存session id。之后浏览器发送请求时,便可以通过Cookie中的sessionId找到响应的用户。

也就是说,Cookie和Session组合使用(会员Cookie)实现网站对于用户的身份认证。

4. Token(Json Web Token 的简称就是 JWT,通常可以称为 Json 令牌,实现网站对于用户的身份认证。

Token可以解决会员Cookie方式存在的当浏览器请求另一台服务器时找不到Session的问题(因为Cookie保存在上一台服务器上)。

Token采用通过一个只有服务器知道的密钥和相应的密钥算法(比如SHA256)对信息加密,生成一个secret,然后和header(指定了加密算法)和payload(一些信息,包括用户信息)组成token;

之后浏览器请求服务器时,服务器通过指定的算法和保存的密钥计算secret,若secret和token中的signature相同,则认证成功,因此成功地记录了用户的登录状态。由于不存在需要在浏览器中保存session相似的操作,因此解决了session在不同服务器间不可见的问题(时间换空间);

5.相同:

都是为了解决HTTP协议无状态的问题

6.不同

token解决了会员cookie在不同服务器之间不可见的问题;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值