session、cookie、token

文章探讨了HTTP协议的无状态特性以及如何通过Session、Cookie和Token来管理用户状态。Session在服务器端存储,增加服务器负担,而Cookie存储在客户端,有数量限制。Token提供了一种无状态、可扩展且安全的解决方案,尤其适合跨域资源共享。JWT(JsonWebToken)在实现CORS时扮演重要角色。
摘要由CSDN通过智能技术生成

应用场景

Session

由于http为无状态的,无法记录区分不同用户的请求,因此在发送http请求时附带session id可以标志不同的用户,实现向购物车添加产品这个功能

缺点

  • 每个用户独有的session存在于服务器,增加服务器负担
  • 负载均衡时,访问不同服务器时,session复制,增加服务器负担---> 解决方法:session sticky 固定访问同一个服务器(仍然无法避免session复制)
  • session集中到某一服务器,存在单点失败的风险,且服务器宕机可能造成大规模重新登陆

解决方法

通过客户端发送数据,并携带签名 即toekn,服务端使用密匙计算数据得到签名并与token进行验证。

CPU计算时间换存储空间

Cookie

cookie由服务器生成,发送给浏览器,浏览器把cookie以kv形式保存到某个目录下的文本文件内,下一次请求同一网站时会把该cookie发送给服务器。

由于cookie是存在客户端上的,所以浏览器加入了一些限制确保cookie不会被恶意使用,同时不会占据太多磁盘空间,所以每个域的cookie数量是有限的。

Token

用户登录校验,验证成功后服务器返回一个toekn给客户端,客户端下次请求携带token,服务器采用filter进行校验,校验成功返回数据,失败返回错误代码

可用使用cookie存储token,此时cookie用于存储而不用于认证

优点

  • 无状态、可扩展
  • 安全性
  • 可扩展性
  • 多平台跨域
    • 结合JWT实现CORS(跨域资源共享)

未完待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值