欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 旅游 > 详解Cookie和Session

详解Cookie和Session

2025/4/21 16:21:05 来源:https://blog.csdn.net/zhyhgx/article/details/145612026  浏览:    关键词:详解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传递。


 

以上就是本篇所有内容~

若有不足,欢迎指正~ 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词