理解Cookie 和Session

要理解 Cookie 和 Session,可以先记住一个核心场景:我们在浏览器上登录网站(比如淘宝、微信公众号)后,关掉页面再重新打开,网站能 “认得出我们”,不用反复输入账号密码 —— 这背后主要就是 Cookie 和 Session 在配合工作。下面用最通俗的话拆解两者:

一、先搞懂 Cookie:网站存在你电脑里的 “小纸条”

你可以把 Cookie 想象成 “网站给你的一张手写小纸条”,这张纸条会存在你自己的电脑 / 手机浏览器里(比如 Chrome、Safari 的本地文件中)。

举个具体例子:
你第一次访问某购物网站,没登录时浏览商品,网站会偷偷给你发一张纸条,上面写着:“访客 ID:12345,上次看了运动鞋、T 恤”。
等你下次再打开这个网站,浏览器会主动把这张纸条递给网站 —— 网站一看:“哦,是 12345 啊,上次看了运动鞋,这次推点相关的吧”,于是你就能看到历史浏览记录、个性化推荐,甚至没登录时加的购物车也还在。

再比如登录场景:
你输入账号密码登录后,网站会更新这张纸条,上面多写一句:“已登录,用户 ID:小明 666”。之后你逛首页、看订单,浏览器每次和网站 “沟通”,都会带着这张纸条 —— 网站一看纸条就知道 “是小明登录了”,不用让你再输密码。

Cookie 的关键特点:

  1. 存在 “你的设备上”:纸条在你自己的电脑 / 手机里,不是存在网站服务器上;
  2. 内容很简单:就是些文字信息(比如用户 ID、浏览记录、登录状态),而且有大小限制(一般几 KB,存不了太多东西);
  3. 可设置 “有效期”:有的纸条是 “临时的”(关掉浏览器就自动删,比如没登录时的访客 ID),有的是 “长期的”(比如勾选 “记住我” 后,纸条能存几天、几个月,甚至几年);
  4. 不是 “病毒”:它只能被发纸条的网站读取(比如淘宝的 Cookie 只有淘宝能读,京东读不了),不会主动偷你电脑里的其他信息。

二、再理解 Session:网站服务器上的 “客户档案”

Session 可以理解成 “网站服务器上给你建的一份‘客户档案’”。比如你去理发店办了会员,理发店会给你建个档案,记录你的发型偏好、消费次数 —— 这份档案存在理发店(对应 “网站服务器”),而不是你手里。

还是用登录举例:
你输入账号密码登录某网站时,网站会做两件事:

  1. 在自己的服务器上新建一份 “档案”(Session),档案里记着:“SessionID:ABCDE,用户:小明,登录时间:2024 年 8 月 29 日”(这份档案只存在网站服务器里,你看不到、改不了);
  2. 同时给你发一张 Cookie 小纸条,纸条上只写一句关键信息:“你的 SessionID 是 ABCDE”。

等你之后在网站上操作(比如查订单、发消息),浏览器会带着这张 “写有 SessionID 的 Cookie” 传给网站 —— 网站拿到 SessionID 后,去自己的服务器里找对应的 “档案”:“哦,ABCDE 对应的是小明,他有权限查订单”,于是就给你展示内容了。

Session 的关键特点:

  1. 存在 “网站服务器上”:档案在网站的电脑里,你碰不到,安全性比 Cookie 高(比如不会被篡改);
  2. 靠 “SessionID” 关联你:服务器不直接记 “你是谁”,而是记 “SessionID=ABCDE 对应小明”,而 SessionID 是通过 Cookie 传给你的;
  3. 会 “过期”:如果你的账号长时间不用(比如 1 小时没操作),服务器会自动删掉这份档案 —— 下次你再点按钮,网站就会提示 “请重新登录”,这是为了安全(防止别人偷用你的 Session)。

三、一句话总结:Cookie 和 Session 是 “搭档”

  • Cookie 是 “你手里的凭证”:存你设备上,帮你 “告诉网站你是谁”(靠 SessionID 或简单信息);
  • Session 是 “网站手里的档案”:存服务器上,帮网站 “确认你是谁、能做什么”(靠 Cookie 传的 SessionID 找档案);
  • 没有 Session,Cookie 只能存简单信息(比如浏览记录),没法实现 “登录后保持身份”;没有 Cookie,Session 的 SessionID 传不到你手里,网站也认不出你。

补充:为什么需要两者配合?

有人会问:“直接把登录信息存在 Cookie 里不行吗?为啥要搞个 Session?”
因为 Cookie 是存在你自己设备上的,能被你手动修改—— 比如你把 Cookie 里的 “用户 ID” 改成别人的,理论上就能冒充别人登录(当然现在网站有加密,没这么简单)。
而 Session 存在服务器上,你改不了,只有网站能控制 —— 所以关键信息(比如登录状态、权限)都存在 Session 里,Cookie 只传个 “SessionID” 这个 “钥匙”,既安全又高效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值