Cookie 和 Session 的工作流程

一、Cookie和Session
1.Cookie
①Cookie是啥:浏览器提供的持久化存储数据的机制
②Cookie从哪里来:Cookie是服务器返回给浏览器的,服务器代码中由程序员决定把啥样的信息保存到客户端这边,通过HTTP响应的Set-Cookie字段把键值对写回去即可。
③Cookie到哪里去:Cookie会在后续浏览器访问服务器的时候带到请求的header中发给服务器。
④Cookie存储在哪里:存储在浏览器(客户端)所在主机的硬盘中,具体的存储浏览器会根据域名来分别存储
2.Session

例如,生病了去医院看病,到了医院先挂号,挂号时候需要提供身份证, 同时得到了一张 “就诊卡”,这个就诊卡就相当于患者的 “令牌” 。要想让这个令牌能够生效, 就需要医院通过系统记录每个就诊卡和患者信息之间的关联关系.

①Session的本质就是一个 “哈希表”,存储了一些键值对结构。key 就相当于令牌的 ID( sessionId / token),value 就是用户信息(HttpSession)。
② sessionId / token 是由服务器生成的一个 唯一性字符串,从 session 机制的角度来看, 这个唯一性字符串称为 “sessionId”. 但是站在整个登录流程中看待, 也可以把这个唯一性字符串称为 “token”.
③当用户登陆的时候, 服务器在Session中新增一个新记录, 并把 sessionId / token通过Set-Cookie字段返回给客户端;客户端后续再给服务器发送请求的时候,需要在请求中带上 sessionId / token(例如通过HTTP请求中的 Cookie 字段带上).
④服务器收到客户端发来的请求之后,根据请求中的 sessionId / token在 Session信息中获取到对应的用户信息后再进行后续操作
⑤Servlet 的Session默认是保存在内存中的,如果重启服务器则Session数据就会丢失
3.Cookie 和 Session 的区别
①Cookie是客户端的存储机制,Session是服务器的存储机制;
②Cookie里面可以存各种键值对(还可以存别的),Session则专门用来保存用户的身份信息;
③Cookie完全可以单独使用,不搭配Session(实现非登陆场景下),Session也可以不搭配Cookie使用(手机app登陆服务器,服务器也需要Session,此时就没有Cookie概念);
④Cookie是属于HTTP协议的一部分,Session则可以和HTTP无关

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值