当前位置: 首页 > news >正文

详解Cookie和Session

目录

​前言

什么是Cookie?

Cookie工作原理

Cookie的功能

Session

什么是Session?

Session的工作原理

Session的功能

示例

 Cookie和Session的区别


前言

我们在前面的学习HTTP协议中,HTTP协议自身是属于“无状态”协议,无状态指的是默认情况下HTTP协议的客户端和服务器之间的这次通信,和下次通信之间没有直接的联系。

但在实际开发中,我们很多时候是需要知道请求之间的关联关系的。比如,我们在登录网址成功河后。第二次访问的时候服务器就能知道该请求是否已经登录过了。

而要完成上面这种,需要通过Cookie和Session来完成。

什么是Cookie?

Cookie是一种存储在用户浏览器中的小型文本文件,用于在用户与网站之间传递信息,主要用于跟踪用户的会话状态、偏好设置、登录信息等

服务器可以通过设置或获取Cookie中包含的信息,来维护用户跟服务器会话中的状态。

Cookie是由服务端生成的,发送给客户端的。

Cookie工作原理

  1. 设置Cookie:
    1. 当用户要对网站进行某些操作(如登录)时,服务器会通过HTTP响应头中的 Set-Cookie 指令将Cookie发送给浏览器。
    2. 浏览器在接收到响应后,会将Cookie存储在浏览器本地。
  2. 发送Cookie:
    1. 当用户再次访问该网站时,浏览器会在 HTTP 请求头中自动将存储的 Cookie 发送给服务器;
    2. 服务器通过解析 Cookie 中的值(如 sessionId),获取用户的会话信息或其他相关数据。
  3. 删除Cookie
    1. 当 Cookie 的有效期到期时,浏览器会自动删除该 Cookie;

    2. 服务器也可以通过设置 Expires 为过去的时间或通过 Max-Age=0 来删除 Cookie。

Cookie的功能

  • 会话管理用于跟踪用户的登录状态。例如,当你登录一个网站后,服务器会生成一个 sessionId 并将其存储在 Cookie 中。之后,每次你访问该网站时,浏览器会自动将这个 Cookie 发送给服务器,服务器通过 sessionId 识别你的身份,从而保持你的登录状态。
  • 跟踪用户行为用于分析的浏览行为,帮助网站优化用户体验。例如,广告商可能会使用 Cookie 来跟踪用户的浏览历史,以便展示更相关的广告。
  • 个性化设置用于存储用户的偏好设置,如语言选择、主题模式等。例如,如果你将网站的语言设置为中文,网站会将这个设置存储在 Cookie 中,下次你访问时,网站会自动加载中文界面。

Session

什么是Session?

Session(会话)是Web开发中用于跟踪用户状态的一种机制。它允许服务器存储有关用户的信息,以便在用户访问网站的不同页面时保持用户的状态。与 Cookie 不同,Session 数据存储在服务器端,而不是客户端。

Session的工作原理

  1. 创建Session
    1. 当用户登录网站或执行某些操作时,服务器会创建一个Session,并生成一个唯一的sessionId

    2. 服务器将sessionId发送给浏览器,通常通过Cookie存储在浏览器中。

  2. 使用Session

    1. 当用户再次访问网站时,浏览器会将包含 sessionIdCookie 发送给服务器。
    2. 服务器通过 sessionId 查找对应的 Session 数据,从而获取用户的身份信息和其他会话数据。
  3. 销毁Session
    1. 当用户注销或关闭浏览器时,服务器会销毁对应的 Session,释放资源并保护用户的隐私。

    2. 服务器也可以设置 Session 的超时时间,超过这个时间后,Session 会自动销毁。

 

Session的功能

  • 用户身份验证:用于跟踪用户的登录状态。当用户登录网站时,服务器会创建一个 Session,并将用户的登录信息(如用户ID、角色等)存储在 Session 中。每次用户请求页面时,服务器通过 Session 验证用户的身份。

  • 用户会话管理:用于存储用户在会话期间的临时数据,例如购物车中的商品、表单的输入数据等。这些数据在用户关闭浏览器或会话超时后会被销毁。

  • 个性化体验:用于存储用户的偏好设置,如语言选择、主题模式等。这些设置可以在用户访问网站的不同页面时保持一致。

示例

 我们用浏览器在访问一些网站的时候,会需要判断我们是否已经登录,如果没有登录的话会要求我们登录。当我们登录成功后,服务器会生成一个session(会话)存储在服务器中,并生成一个sessionId,在返回响应给浏览器的时候将sessionId带上,当浏览器拿到响应后,浏览器会将sessionId存储到cookie中。当我们想要再访问网站的时候,浏览器就会将包含sessionId的cookie和请求数据包一起发送给服务器,当服务器拿到cookie中的sessionId后,就会根据sessionId拿到对应的session从而完成后续操作。

例如:我们去医院看病,那么我们需要以下流程:

  1. 挂号(登录):患者在医院挂号时提供身份证号,医院确认身份后发放带有就诊号的就诊卡。这类似于用户在网站上登录时输入用户名和密码,服务器确认身份后生成 sessionId 并通过 Cookie 发送给浏览器。
  2. 就诊卡(cookie):就诊卡上存储的是唯一的就诊号(sessionId),它是患者在医院系统中的唯一标识。就诊卡具有安全属性,如只能由医院系统读取(类似 HttpOnly),且通过安全网络传输(类似 Secure)。就诊卡可以是临时的(会话级Cookie)或长期的(持久化Cookie),用于标识患者的身份。
  3. 患者的个人信息(session):医院系统中存储了患者的详细信息(如病史、过敏史等),这些信息与就诊号关联。医生通过就诊卡上的就诊号从系统中获取患者的详细信息。这类似于服务器通过 Cookie 中的 sessionIdSession 中获取用户的详细信息。
  4. Session的销毁:当患者完成就诊后,医院系统会销毁患者的会话信息(Session),以释放资源并保护隐私。如果患者离开医院,系统也会在一定时间后自动销毁会话信息。这类似于用户注销或关闭浏览器后,服务器销毁对应的 Session
  5. 多设备访问:患者在不同医院就诊需要重新挂号,每个医院发放新的就诊卡,但患者的病历在医院系统中是统一的。这类似于用户在不同设备上访问网站时需要重新登录,每个设备上的 Cookie 是独立的,但用户的账户信息在服务器上是统一的。

 Cookie和Session的区别

  • Cookie是客户端保存用户信息的一种机制,Session是服务器保存用户信息的一种机制。

  • Cookie和Session之间主要是通过SessionId关联起来的,SessionId是Cookie和Session之间的桥梁

  •  Cookie和Session经常会在一起配合使用,但不是必须配合。

    • 完全可以用Cookie来保存一些数据在客户端,这些数据不一定是用户身份信息,也不一定是sessionId。

    • Session中的sessionId也不需要非得通过Cookie/Set-cookie来传递,如:通过URL传递。


 

以上就是本篇所有内容~

若有不足,欢迎指正~ 

相关文章:

  • DeepseeK自动写作,自动将回答导出文档
  • 小米 R3G 路由器(Pandavan)实现网络打印机功能
  • LINUX常用命令学习
  • vue开发06:前端通过webpack配置代理处理跨域问题
  • Linux 共享内存
  • Python教程108:针对面向对象Class类知识要点,源码示例再演示
  • Qt的QTreeWidge的使用
  • 从技术债务到架构升级,滴滴国际化外卖的变革
  • MySQL错误-this is incompatible with sql_mode=only_full_group_by完美解决方案
  • 大模型的未来已来
  • 苍穹外卖学习
  • 谭浩强C语言程序设计(5) 9章
  • 通俗理解-L、-rpath和-rpath-link编译链接动态库
  • pyqt自制简单浏览器(python)
  • QT c++ QObject::connect函数 线程给界面发送数据
  • JavaScript设计模式 -- 观察者模式
  • 《玩转AI大模型:从入门到创新实践》(8)第六章 进阶实战:定制你的AI大脑
  • Ollama本地部署DeepSeek+构建个人知识库笔记
  • C语言:数据的存储
  • 自动化测试实战
  • 建湖哪家专业做网站/无锡今日头条新闻
  • 深圳哪家做网站最好/南昌百度快速排名提升
  • 化妆品公司网站模板/湖北seo整站优化
  • 西安网站建设公司/windows7优化大师
  • 湛江市企业网站seo点击软件/简述网络营销的特点及功能
  • p2p电影网站开发/深圳seo优化公司搜索引擎优化方案