Session、Cookie和Token

Session、Cookie和Token

参考:Session、Cookie、Token 【浅谈三者之间的那点事】

img

HTTP协议是一种无状态协议,即每次服务端接收到客户端请求时,都是一个全新的请求,服务器并不知道客户端的历史请求记录;Session和Cookie的主要目的就是为了弥补HTTP的无状态特性。

Session

客户端请求服务端,服务端会为这次请求开辟一块 内存空间,这个对象便是Session对象,存储结构为 ConcurrenthashMap,Session弥补了HTP无状态的特性,服务器可以利用Session存储客户端在同一会话期间的一些操作记录。

session

  • 会话,代表服务器与浏览器的一次会话过程,这个过程是连续的,也可以时断时续。
  • cookie中存放着一个sessionID,请求时会发送这个ID;
  • session因为请求(request对象)而产生;
  • session是一个容器,可以存放会话过程中的任何对象;
  • session的创建与使用总是在服务端,浏览器从来都没有得到过session对象;
  • session是一种http存储机制,目的是为武装的http提供持久机制。

Session如何判断是同一条会话

服务器接收到请求时,开辟一块Session空间(创建的Session对象),同时生成一个sessionId,并通过响应头的Set-Cookie:JSESSION=XXXXXX命令,向客户端发送要求设置Cookie的响应;客户端接收到响应后,在本机设置一个 JESSIONID=XXXXXX的Cookie信息,这个Cookie的过期时间为浏览器会话结束;img接下来客户端每次的请都会带上这个Cookie信息(包含 sessionId ),然后,服务器通过读取请求头中的 Cookie 信息,获取名称为JESSIONID的值,得到此次请求的sessionId。

Session的缺点

Session机制缺点是,例如在A服务器存储了Session,但又做了负载均衡,假如一段时间内A的访问量剧增,访问会被转发到B服务器,但B没有A的Session,会导致 Session 的失效。

Cookie

HTTP协议中的Cookie包括Web Cookie浏览器Cookie,它是服务器发送到Web浏览器的一小块数据。服务器发送到浏览器的Cookie,浏览器会进行存储,并与下一个请求一起发送到服务器。通常用于判断两个请求是否来自同一个浏览器,例如用户保持登陆状态。

HTTP Cookie 机制是 HTTP 协议无状态的一种补充和改良

cookie

储存在用户本地终端上的数据,服务器生成,发送给浏览器,下次请求统一网站给服务器。

Cookie 主要用途

  • 会话管理

登陆、购物车、游戏得分或者服务器应该记住的其他内容

  • 个性化

用户偏好、主题或者其他设置

  • 追踪

记录和分析用户行为

token

令牌,是用户身份的验证方式。
最简单的token组成:uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名)。

对Token认证的五点认识

  • 一个Token就是一些信息的集合;
  • 在Token中包含足够多的信息,以便在后续请求中减少查询数据库的几率;
  • 服务端需要对cookie和HTTP Authrorization Header进行Token信息的检查;
  • 基于上一点,你可以用一套token认证代码来面对浏览器类客户端和非浏览器类客户端;
  • 因为token是被签名的,所以我们可以认为一个可以解码认证通过的token是由我们系统发放的,其中带的信息是合法有效的;

cookie与session区别

cookie数据存放在客户端上,session数据放在服务器上;

默认关闭浏览器,session消失

cookie不是很安全,且保存数据有限;

session一定时间内保存在服务器上,当访问增多,占用服务器性能。

session与token

作为身份认证,token安全行比session好;
Session 认证只是简单的把User 信息存储到Session 里,因为SID 的不可预测性,暂且认为是安全的。这是一种认证手段。 而Token ,如果指的是OAuth Token 或类似的机制的话,提供的是 认证 和 授权 ,认证是针对用户,授权是针对App 。其目的是让 某App有权利访问 某用户 的信息。

token与cookie

Cookie是不允许垮域访问的,但是token是支持的, 前提是传输的用户认证信息通过HTTP头传输;

token就是令牌,比如你授权(登录)一个程序时,他就是个依据,判断你是否已经授权该软件;cookie就是写在客户端的一个txt文件,里面包括你登录信息之类的,这样你下次在登录某个网站,就会自动调用cookie自动登录用户名;session和cookie差不多,只是session是写在服务器端的文件,也需要在客户端写入cookie文件,但是文件里是你的浏览器编号.Session的状态是存储在服务器端,客户端只有session id;而Token的状态是存储在客户端。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RICKC131

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值