Cookie和Session的关系 - 通俗举例

Cookie和Session的关系

Cookie 和 Session 是在 web 开发中用于维护用户状态的两个关键概念。

  1. Cookie:

    • 定义: Cookie 是在客户端(通常是浏览器)存储的小型文本文件,由服务器发送到客户端并存储在用户的计算机上。
    • 作用: Cookie 主要用于在客户端保持用户的一些信息,如用户首选项、登录状态等。
    • 特点: Cookie 以键值对的形式存在,可以通过浏览器的 Cookie 存储来存储和检索信息。
  2. Session:

    • 定义: Session 是服务器端的一种机制,用于在服务器上存储用户的信息,以维护用户的状态。
    • 作用: Session 通常用于存储和跟踪用户在网站上的会话信息,如登录状态、购物车内容等。
    • 特点: 每个用户都有一个唯一的会话标识符(Session ID),该标识符通常存储在 Cookie 中,但也可以通过 URL 参数传递。服务器使用这个标识符来检索用户的会话信息。

关系:

  • Cookie 存储 Session ID: 通常,Session ID 被存储在 Cookie 中。当用户首次访问网站时,服务器会生成一个唯一的 Session ID,并将它存储在一个名为 "sessionid" 或类似的 Cookie 中,然后将该 Cookie 发送给客户端。
  • Session 数据存储在服务器: 用户的实际会话数据(如登录状态、购物车内容)存储在服务器上,而不是存储在 Cookie 中。服务器使用 Cookie 中的 Session ID 来映射到相应的会话数据。

工作流程简述:

1. 用户首次访问网站,服务器创建一个唯一的 Session ID,并将它存储在 Cookie 中。
2. 服务器创建一个与该 Session ID 相关联的会话,并在服务器端存储用户的状态信息。
3. 用户的浏览器随后的每次请求都会携带这个 Session ID(存储在 Cookie 中),服务器据此来检索用户的会话信息,以维护用户的状态。
  • 总的来说,Cookie 和 Session 是为了在 web 应用中保持用户状态而设计的,它们相互协作,Cookie 用于在客户端存储 Session ID,而 Session 数据则存储在服务器上。

举例 - 商店购物

当我们访问一个网站时,可以把这个过程类比为进入一家商店。在这个例子中:

定义:

  1. Cookie 就像是你手上的购物篮:

    • 当你第一次进入商店时,店员给了你一个购物篮,上面写有一个独一无二的编号。这个购物篮就是 Cookie,它存放在你手上,代表着你在这家商店的“身份”。
  2. Session 就像是商店后台的购物篮架:

    • 商店后台有一个大的购物篮架,上面标有各种编号,每个编号对应着一个顾客的购物篮。这个购物篮架就是 Session,它在商店的后台,用于存储所有顾客的购物篮(状态信息)。
  3. 购物篮编号(ID):

    • 购物篮上的编号就像是 Session ID,它是唯一的,能够将你的购物篮与后台的购物篮架上的对应起来。每个购物篮都有一个独立的编号,存储在不同的 Cookie 中。
  4. 购物篮上的有效期标签(Session 的时效性机制):

    • 在每个购物篮上贴着一个有效期标签,表示这个购物篮的有效时间。比如,标签上写着“24小时”。
    • 这个有效期标签就是 Session 的时效性机制,它规定了这个购物篮(Session)在多长时间内有效。

Session(购物篮)相关活动:

  1. 购物篮生成(Session 创建):

    • 商店(服务器)在用户第一次进入时为其生成一个独特的购物篮(Session ID)。
    • 购物篮上可能有一个有效期标签,表示购物篮在一定时间内有效。
  2. 购物篮分发(Cookie 发送):

    • 商店将购物篮交给用户,并在用户手中放置一个编号(Cookie)以便下次进入商店时能够识别。
    • 用户在商店中活动,将购物篮携带在手上,实现状态的维护。
  3. 购物篮回收(Session 过期或删除):

    • 购物篮可能有一个有效期,一旦过期,商店可能会要求用户重新领取一个新的购物篮(Session 创建)。
    • 用户关闭浏览器时,购物篮可能会被销毁(Session 过期或删除),商店会清理过期的购物篮。
  4. 购物篮更新(Session 刷新):

    • 用户在商店活动时,购物篮上的有效期标签可能会不断更新,确保用户在活动期间购物篮保持有效。

操作流程:

1. 你进入商店时,得到一个购物篮(Cookie),上面有编号(Session ID)和有效期标签(Session 的时效性机制)。
2. 每次你在商店里选购商品(在网站上进行活动),都往购物篮里放入了一些商品,这些商品就代表着你的活动和状态信息。
3. 每当你进行操作时,有效期标签上的时间都会被刷新,相当于购物篮的有效时间被延长。
4. 如果你在有效期内持续活动,购物篮(Session)会一直保持有效。
5. 当有效期到达后(比如24小时后),即使你手上还有购物篮(Cookie),但商店可能会要求你重新领取一个新的购物篮,以确保安全性和及时更新用户状态。
6. 当你结账时(进行某些操作),你手上的购物篮(Cookie)上的编号(Session ID)告诉店员(服务器),店员从后台购物篮架(Session)里拿出对应编号的购物篮,查看你选购的商品(活动和状态信息)。
  • 这样,Cookie 和 Session 通过编号的方式,使得在整个购物(网站访问)过程中能够保持状态,让服务器能够根据编号找到相应的用户数据。
posted @   取到小饼干  阅读(275)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
都翻到底啦,确定不打赏一下吗😘

喜欢我的话
欢迎打赏😘
感谢您的认同

支付宝打赏二维码 微信打赏二维码
点击右上角即可分享
微信分享提示