深入理解Session与Cookie

Session与Cookie可以说是面试中被问频率最高的两兄弟了,我是谁?我在哪?我在干什么?让我们带着这三个疑问去学习一下这两兄弟。
Session与Cookie的作用都是为了保持访问用户与后端服务器的交互状态。使用Cookie传递信息,随着Cookie数的增加占用的网络带宽增大;所以大访问量时需要使用Session,但是Session存在本地,又不容易在多个服务器共享。哎~该怎么权衡呢,接着往下看。

理解Cookie

用户通过HTTP访问服务器时,服务器将一些Key/Value对返回给客户端浏览器,并给这些数据加上一些限制条件,在条件符合时这个用户下次访问这个服务器时,数据又被完整的带给服务器。

Cookie的版本

当前有两个版本:Version 0和Version 1;
在这里插入图片描述
在这里插入图片描述

Cookie如何工作

在这里插入图片描述
我们请求某个URL路径时,浏览器会根据这个URL将符合条件的Cookie放入Request请求头中传回给服务端,服务端通过request.getCookie()来取得所有Cookie。

使用Cookie的限制

在这里插入图片描述
在这里插入图片描述

理解Session

每次客户端的访问都会传回Cookie,如果Cookie很多会增加数据传输量。Session的出现解决了这个问题,不需要传输Cookie值,只需要传输Cookie的值ID,ID就是NANE为JSESIONID的一个Cookie。

Session的工作

在这里插入图片描述
第一次触发通过request.getSession()方法,当前Session ID没有对应的HTTPSession对象,创建一个新的,并加入到org.apache.catlina.Manager的session容器中保存。Manager类管理所有Session的生命周期,Session过期将被回收,服务器关闭,Session被序列化到磁盘。只要HTTPSession对象存在,用户可根据Session ID获取对象。

安全性

Cookie通过把所有要保存的数据通过HTTP的头部从客户端传递给服务端,又从服务端再传回给客户端,所有数据存在客户端的浏览器里,这些Cookie可以被查看和修改,所以安全性是很大的隐患;
Session是将数据保存在服务端,只通过Cookie传递一个SessionID,所以Session更是存储用户隐私和重要的数据。

分布式Session框架

Cookie存在的问题

  1. 客户端Cookie存储限制;Cookie增加超过浏览器存储的限制会丢弃Cookie
  2. Cookie的管理混乱。
  3. Cookie的安全性问题令人担忧

分布式Session框架的出现

Cookie和Session都有各自的优点,结合提出分布式Session框架的概念。分布式框架有哪些优点:

  1. Session配置的统一管理
  2. Cookie使用的监控和统一规范管理
  3. Session存储的多元化
  4. Session配置的动态修改
  5. Session加密Key的定期修改
  6. 充分的容灾机制,保持框架的使用稳定性
  7. Session各种存储的监控和报警支持
  8. Session框架的可扩展性,兼容更多的Session机制

实现的思路

在这里插入图片描述
统一通过订阅服务器推送配置可以有效地集中管理资源,所以可以省去每个应用都来配置Cookie,简化Cookie的管理。订阅服务器现在有很多开源的配置服务器,如Zookeeper集群管理服务器,可以统一管理所有服务器的配置文件。
将Session都保存在服务器内存中会造成内存压力过大,以及Session无法同步到应用所有服务器。解决方法是存储在一个分布式缓存中,可以随时的写入和读取,而且性能要很好才能满足,目前有MemCache或者淘宝的开源式分布式缓存系统Tair。

如何跨域名跳转

Cookie有域名限制,在一个域名下不能被另一域名访问,如何解决?
在这里插入图片描述

Cookie的压缩

压缩方式是将Cookie的多个k/v对看成普通文本,做文本压缩。将压缩后的结果再进行转码,可以进行Base32和Base64编码。2KB大小的Cookie压缩前与压缩后的字节数相差20%左右。

多终端登录

在这里插入图片描述
手机扫码前必须是已经登录的状态,同时扫码的二维码带有一个特定的标识,标识客户端通过手机端登录了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值