总结 Cookie 和 Session 的工作流程

目录

一.什么是Cookie

二.什么是Session

三.Cookie的工作流程

四.Session的工作流程

五.Cookie与Session的区别


一.什么是Cookie

  • Cookie是一种在网站和用户之间交换信息的机制。它是由Web服务器发送给用户浏览器的小型文本文件,存储在用户的设备上。当用户访问网站时,浏览器会将Cookie保存在用户的设备上,并在以后的访问中将该Cookie发送回服务器。
  • Cookie可以用来存储用户的偏好设置、登录状态、购物车内容等信息。网站可以通过读取Cookie来识别用户,并为用户提供个性化的体验。例如,网站可以根据Cookie中的信息记住用户喜欢的语言、颜色主题或其他个性化设置。
  • 然而,Cookie也有一些隐私和安全方面的顾虑。某些Cookie可能会跟踪用户的浏览活动,并在用户离开网站后继续跟踪用户。为了保护用户隐私,现代浏览器通常提供选项,允许用户控制哪些Cookie可以被接受或拒绝,并允许用户删除现有的Cookie。

二.什么是Session

  • Session是在Web开发中用于跟踪用户状态和保持用户数据的一种机制。它基于服务端,在用户访问网站时创建一个唯一的会话标识符(session ID),并将该标识符存储在用户的浏览器的Cookie中或者通过URL重写传递。
  • 当用户与网站进行交互时,服务器使用会话标识符来识别用户,并在服务器端创建一个与该会话关联的数据存储空间,通常称为会话存储。在会话存储中,可以存储和检索用户相关的数据,比如登录状态、购物车内容、用户首选项等。
  • Session的主要优点是存储在服务器端,用户无法直接修改会话数据,因此更安全可靠。此外,由于会话标识符存储在Cookie中,用户在同一浏览器中访问网站的不同页面时会自动携带该标识符,无需显式传递,方便管理。
  • 然而,Session机制也存在一些局限性。首先,它依赖于用户浏览器的Cookie支持,如果用户禁用Cookie,会导致Session无法正常工作。其次,由于会话数据存储在服务器内存或数据库等持久化存储中,过多的会话数据可能会增加服务器的负载和存储需求。
  • 总之,Session是一种在Web开发中常用的机制,用于维护用户状态和存储用户数据,为用户提供个性化的体验和交互。

三.Cookie的工作流程

我们知道Cookie是浏览器在本地存储数据的一种机制,而它还有个重要的作用,那就是存储用户登录信息,如图,浏览器会向服务器发送请求,服务器会给浏览器发送响应和Set-Cookie,其中,通过Set-Cookie就可以把要保存在本地的数据给发送给浏览器,浏览器接受后,就会把数据存储在特定的文件中,后续浏览器要访问服务器的时候,就会把存在本地的所有Cookie都通过HTTP请求给带过去.

四.Session的工作流程

  • 服务器同一时刻收到的请求是很多的. 服务器需要清除的区分清楚每个请求是从属于哪个用户, 就需要在服务器这边记录每个用户令牌以及用户的信息的对应关系.
  • Session的本质就是一个 "哈希表", 存储了一些键值对结构. key 就是令牌ID(token/sessionId), value 就是用户信息(用户信息可以根据需求灵活设计).
  • Session会给用户分配一个sessionId,同时记录下用户的身份信息,sessionId会被返回到浏览器的Cookie中存储,后续浏览器访问服务器都会带着这个sessionId,从而能够让服务器通过sessionId在哈希表中查找到用户的身份信息了.

  1. 当用户登陆的时候, 服务器在 Session 中新增一个新记录, 并把 sessionId / token 返回给客户端. (如通过 HTTP 响应中的 Set-Cookie 字段返回).
  2. 客户端后续再给服务器发送请求的时候, 需要在请求中带上 sessionId/ token. (例如通过 HTTP 请求中的 Cookie 字段带上).
  3. 服务器收到请求之后, 根据请求中的 sessionId / token Session 信息中获取到对应的用户信息, 再进行后续操作.
注意:Servlet 的 Session 默认是保存在内存中的. 如果重启服务器则 Session 数据就会丢失.

五.Cookie与Session的区别

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

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值