cookie和session实现状态保持的区别

为什么需要状态保持

  Web应用程序使用HTTP协议作为传输数据的标准协议,而HTTP协议是无状态协议,即一次请求对应一次响应,响应结束后连接即断开,同一个用户的不同请求对于服务器端来讲并不会认为这两个请求有什么关联性,并不会以此区分不同的客户端。但实际情况中还是需要服务器端能够区分不同的客户端以及记录与客户端相关的一些数据,所以状态管理能够做到不同客户端的身份识别。

 

cookie

Cookie是服务器发送到用户浏览器并保存在本地的一小块数据(最大4k),一般被加密,它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上。

一个cookie拥有如下属性:

name:确定一个Cookie。路径可能不同

value:不能存中文

可选属性:比如注释、路径和域限定符

过期时间

版本号

工作原理:

浏览器第一次访问网站,服务器会生成cookie并发送给浏览器

浏览器保存cookie信息

浏览器再次访问网站,会携带相应的cookie

服务器验证cookie

 

session

Session 代表着服务器和客户端一次会话的过程。Session 对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当客户端关闭会话,或者 Session 超时失效时会话结束。

session也是key--value型,与cookie区别在于cookie的key--value都存储在客户端,而session则将value存储在服务器上。另外,value可以存储更复杂的数据比如对象等信息。

工作原理:

浏览器第一次访问网站,服务器会生成session的key--value,并且保存在服务器一份(集群、内存、数据库、文件都可以),key则以cookie的方式返回给浏览器

浏览器保存session的key

浏览器再次访问网站,会携带相应的key

服务器通过key查询value是否存在来验证合法性

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值