Cookie和Session的关系 - 通俗举例
Cookie和Session的关系
Cookie 和 Session 是在 web 开发中用于维护用户状态的两个关键概念。
-
Cookie:
- 定义: Cookie 是在客户端(通常是浏览器)存储的小型文本文件,由服务器发送到客户端并存储在用户的计算机上。
- 作用: Cookie 主要用于在客户端保持用户的一些信息,如用户首选项、登录状态等。
- 特点: Cookie 以键值对的形式存在,可以通过浏览器的 Cookie 存储来存储和检索信息。
-
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 数据则存储在服务器上。
举例 - 商店购物
当我们访问一个网站时,可以把这个过程类比为进入一家商店。在这个例子中:
定义:
-
Cookie 就像是你手上的购物篮:
- 当你第一次进入商店时,店员给了你一个购物篮,上面写有一个独一无二的编号。这个购物篮就是 Cookie,它存放在你手上,代表着你在这家商店的“身份”。
-
Session 就像是商店后台的购物篮架:
- 商店后台有一个大的购物篮架,上面标有各种编号,每个编号对应着一个顾客的购物篮。这个购物篮架就是 Session,它在商店的后台,用于存储所有顾客的购物篮(状态信息)。
-
购物篮编号(ID):
- 购物篮上的编号就像是 Session ID,它是唯一的,能够将你的购物篮与后台的购物篮架上的对应起来。每个购物篮都有一个独立的编号,存储在不同的 Cookie 中。
-
购物篮上的有效期标签(Session 的时效性机制):
- 在每个购物篮上贴着一个有效期标签,表示这个购物篮的有效时间。比如,标签上写着“24小时”。
- 这个有效期标签就是 Session 的时效性机制,它规定了这个购物篮(Session)在多长时间内有效。
Session(购物篮)相关活动:
-
购物篮生成(Session 创建):
- 商店(服务器)在用户第一次进入时为其生成一个独特的购物篮(Session ID)。
- 购物篮上可能有一个有效期标签,表示购物篮在一定时间内有效。
-
购物篮分发(Cookie 发送):
- 商店将购物篮交给用户,并在用户手中放置一个编号(Cookie)以便下次进入商店时能够识别。
- 用户在商店中活动,将购物篮携带在手上,实现状态的维护。
-
购物篮回收(Session 过期或删除):
- 购物篮可能有一个有效期,一旦过期,商店可能会要求用户重新领取一个新的购物篮(Session 创建)。
- 用户关闭浏览器时,购物篮可能会被销毁(Session 过期或删除),商店会清理过期的购物篮。
-
购物篮更新(Session 刷新):
- 用户在商店活动时,购物篮上的有效期标签可能会不断更新,确保用户在活动期间购物篮保持有效。
操作流程:
1. 你进入商店时,得到一个购物篮(Cookie),上面有编号(Session ID)和有效期标签(Session 的时效性机制)。
2. 每次你在商店里选购商品(在网站上进行活动),都往购物篮里放入了一些商品,这些商品就代表着你的活动和状态信息。
3. 每当你进行操作时,有效期标签上的时间都会被刷新,相当于购物篮的有效时间被延长。
4. 如果你在有效期内持续活动,购物篮(Session)会一直保持有效。
5. 当有效期到达后(比如24小时后),即使你手上还有购物篮(Cookie),但商店可能会要求你重新领取一个新的购物篮,以确保安全性和及时更新用户状态。
6. 当你结账时(进行某些操作),你手上的购物篮(Cookie)上的编号(Session ID)告诉店员(服务器),店员从后台购物篮架(Session)里拿出对应编号的购物篮,查看你选购的商品(活动和状态信息)。
- 这样,Cookie 和 Session 通过编号的方式,使得在整个购物(网站访问)过程中能够保持状态,让服务器能够根据编号找到相应的用户数据。
分类:
渗透测试类知识 / 理论知识
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了