栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Cookie 和 Session 的工作流程

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Cookie 和 Session 的工作流程

cookie与session

HTTP 协议自身是属于 "无状态" 协议.

"无状态" 的含义指的是:

默认情况下 HTTP 协议的客户端和服务器之间的这次通信, 和下次通信之间没有直接的联系.

但是实际开发中, 我们很多时候是需要知道请求之间的关联关系的.

例如登陆网站成功后, 第二次访问的时候服务器就能知道该请求是否是已经登陆过了

图中的 "令牌" 通常就存储在 Cookie 字段中

 理解会话机制 (Session)

       服务器同⼀时刻收到的请求是很多的. 服务器需要清除的区分清楚每个请求是从属于哪个用户, 就需要在 服务器这边记录每个用户令牌以及用户的信息的对应关系.

       会话的本质就是⼀个 "哈希表", 存储了⼀些键值对结构. key 就是令牌的 ID(token/sessionId), value 就是用户信息(用户信息可以根据需求灵活设计).

sessionId 是由服务器⽣成的⼀个 "唯⼀性字符串", 从 session 机制的⻆度来看, 这个唯⼀性字符串称为 "sessionId". 但是站在整个登录流程中看待, 也可以把这个唯⼀性字符串称为 "token"

sessionId 和 token 就可以理解成是同⼀个东⻄的不同叫法(不同视⻆的叫法).

  • 当用户登陆的时候, 服务器在 Session 中新增⼀个新记录, 并把 sessionId / token 返回给客户端. (例如通过 HTTP 响应中的 Set-Cookie 字段返回).
  • 客户端后续再给服务器发送请求的时候, 需要在请求中带上 sessionId/ token. (例如通过 HTTP 请求中的 Cookie 字段带上).
  •  服务器收到请求之后, 根据请求中的 sessionId / token 在 Session 信息中获取到对应的⽤户信息, 再进行后续操作.

Servlet 的 Session 默认是保存在内存中的. 如果重启服务器则 Session 数据就会丢失。

Cookie 和 Session 的区别

  • Cookie 是客户端的机制. Session 是服务器端的机制.
  •  Cookie 和 Session 经常会在⼀起配合使用. 但是不是必须配合.
  •  完全可以用 Cookie 来保存⼀些数据在客户端. 这些数据不⼀定是用户身份信息, 也不⼀定是 token / sessionId
  •  Session 中的 token / sessionId 也不需要非得通过 Cookie / Set-Cookie 传递.

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/890931.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号