HTTP状态保持机制

HTTP协议无状态特性使得服务器需采用状态保持机制,如Cookie+Session和Token(JWT)。Cookie由服务器生成,保存在客户端,Session数据存储在服务器。JWT包含头部、载荷和签名三部分,用于安全地保持状态。在实际应用中,通常结合Cookie和Session使用,以平衡安全性和性能。

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

我们都知道http协议的特点是:无连接、无状态。

所谓的无状态,就是指服务器不记录用户的信息,对于事务处理没有记忆能力,无法根据之前的状态进行本次的请求处理。那么举个例子,小美在某宝购买了一台电脑,她想要继续购物时,此时服务器需要记住小美的信息,思考一下怎样才能让服务器记住小美的信息呢?

这样就引入今天的主题:状态保持 

状态保持的方法有两种:cookie+session实现和token实现

一.cookie+session实现

     首先我们来复习一下cookie和session的概念

cookie:

       Cookie是由服务器端生成,发送给浏览器,浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时自动发送该Cookie给服务器

Cookie可以用来在某个WEB站点会话间持久的保持状态

session:

       Session是另一种记录客户状态的机制,基于Cookie实现,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上

客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上,这就是Session,客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。 

         通过cookie和session的了解,我们可以看出Cookie的本质就是文件,一般放在请求头里,保存在浏览器上。

      由于cookie并不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session。

并且session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie。

所以综合考量我们通常使用cookie+session共同完成状态保持。具体实现如下图所示:

 

二、token实现

JWT:是json web token的缩写,主要分为三部分:头部(header)、载荷(payload)和签名(signature)。如图:

三部分的对比我们画图来看:

 

如上图,由于jwt中头部和载荷都既可以加密也可以解密,所以我们一般使用签名来完成保持状态。具体方法为:

头部+载荷+头部里的加密方式+随机字符串

其中 头部+载荷 属于原始数据 ,头部里的加密方式实际上就是一个字符串 也是透明的,

随机字符串只有后台知道,保证了唯一性和正确性。

登录实现流程如下:

实现功能需要借助:

  一、使⽤django的⾃⼰⽤户模块  
二、 DRF--JWT

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值