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

浅谈 cookie 和 session

Cookie

Cookie 是一种存储在客户端(浏览器)的小型文本文件,用于保存一些用户相关的信息。它是由服务器发送,并在客户端存储的,每次用户发起请求时,浏览器会自动携带相应的 cookie 数据发送给服务器。

作用:
  1. 身份识别:最常用的场景就是身份认证。例如,用户登录后,服务器会生成一个唯一的身份标识(如会话ID)并保存在 cookie 中,以后每次请求时,浏览器会携带该 cookie,服务器通过这个标识来识别用户身份。

  2. 保存用户偏好:网站可以通过 cookie 保存用户的个性化设置,比如语言选择、主题颜色等。

  3. 会话保持:cookie 可以存储会话信息,从而让用户在不同页面之间切换时保持登录状态。

特点:
  • 存储位置:存储在客户端浏览器中。

  • 大小限制:单个 cookie 通常限制在 4KB 左右。

  • 生命周期:可以设置过期时间。如果设置了过期时间,则是持久化的 cookie;如果不设置过期时间,浏览器关闭后 cookie 就会失效。


Session

Session 是一种存储在服务器端的会话状态管理机制,它用于记录与特定用户相关的会话数据。每个 session 都会有一个唯一的 session ID,用户每次请求时会通过 cookie 或 URL 传递这个 session ID,服务器通过这个 ID 来识别用户并找到对应的 session 数据。

作用:
  1. 身份认证:通过 session 保存用户的登录状态信息,避免用户每次请求都需要重新登录。

  2. 保存用户信息:session 可以用来存储用户的购物车信息、表单数据等状态信息,以便用户在多次请求间共享这些信息。

特点:
  • 存储位置:存储在服务器端。

  • 大小限制:相对于 cookie, session 的存储容量较大,因为是保存在服务器端,可以存储复杂的数据结构。

  • 生命周期:一般 session 会有一个固定的过期时间,超过这个时间会话就会失效。session 也可以通过服务器配置来设置有效期。


Cookie 与 Session 的协同工作

  1. 创建 Session:当用户访问网站时,服务器会为用户创建一个 session 对象,并生成一个唯一的 session ID。

  2. 使用 Cookie 存储 session ID:服务器将生成的 session ID 通过 HTTP 响应头的 Set-Cookie 字段发送给客户端,客户端浏览器会保存这个 cookie(其中包含 session ID)。

  3. 浏览器请求时携带 Cookie:用户在之后的每次请求中,浏览器会自动将 cookie(其中包含 session ID)发送给服务器。

  4. 服务器通过 session ID 识别用户:服务器接收到请求后,通过请求中的 session ID 查找对应的 session 数据,从而知道这个请求是哪个用户发出的,并可以访问之前存储的用户状态信息。

这种方式有效地解决了 HTTP 协议的无状态性问题,使得服务器可以在多次请求间识别同一个用户,并维护用户的会话状态。


区别与联系:

  • 存储位置:cookie 在客户端,session 在服务器端。

  • 安全性:session 比 cookie 更安全,因为数据保存在服务器端,cookie 是暴露给客户端的,可能会被劫持、篡改。

  • 存储容量:cookie 存储容量小,session 存储容量大。

  • 性能:cookie 由客户端管理,减少了服务器的存储压力,但增加了传输数据的大小;session 需要服务器存储,但可以避免大数据在客户端的存储。


http://www.mrgr.cn/news/19025.html

相关文章:

  • CMake构建学习笔记14-依赖库管理工具
  • 苍穹外卖项目前端DAY02
  • 老师怎样用微信发布月考成绩?
  • [CISCN2019 华东南赛区]Web111
  • 数分基础(06)商业分析四种类型简介
  • chrome插件开发资料
  • AI制作情侣头像副业项目,每天只需2小时,收入是我工资的三倍(附教程)
  • 一文带你深度了解FreeRTOS——计数型信号量
  • 【系统架构设计师-2021年】综合知识-答案及详解
  • Anaconda安装教程就看这里
  • 首批国自然博士项目获批名单
  • 亿图图示下载安装教程EdrawMax Pro 13版超详细图文教程
  • Maven持续集成(Continuous integration,简称CI)版本友好管理
  • 9.3C++
  • 【深入了解常用类】
  • Java笔试面试题AI答之正则表达式(2)
  • 【iOS】暑期学习总结
  • Spring 学习笔记
  • 探索 Nuxt Devtools:功能全面指南
  • Vue3 中的响应式系统:深入理解 Proxy API