暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Cookie 和 Session,网络编程的体验优化

蒲东平 2023-12-24
136

当我们浏览互联网页面时,有两项非常重要的技术正在默默地提升我们的用户体验:Cookie 和 Session。这两个概念是我们进行网络编程,特别是 Web 服务器编程时,用来实现跟踪用户状态的方案。

但是由于不同的编程语言之间使用 Cookie 和 Session 还是有略微的区别,因此,这里重点还是讲解一下概念性的知识,具体的代码实现就不做讲解,算是抛砖引玉吧。

什么是 Cookie?

Cookie 是由一个网站发送到浏览器的一小片信息,此信息被浏览器储存起来,之后每次浏览器都会将这片信息附加在请求中发送给服务器,这样服务器可以识别和追踪用户。

我们不妨将这个过程比作到一家餐厅用餐。店员(服务器)初次见到你(客户端)时,他在你的胸前贴上一个便签(Cookie),便签上记载了你的名字,这样他就可以在之后“记住”你。

这里的 Cookie,实际上就是“便签”,用以保存用户的一些信息。比如,你在网上购物时将商品添加到购物车,即使你离开了页面再返回,你的购物车里的物品还能保持不变,这就离不开 Cookie。这种优化给用户带来了很大便利。

什么是 Session?

Session,中文我们直译成“会话”。在 Web 环境中,服务器使用 Session 对象跟踪用户的状态。这可以通过嵌在用户请求信息中返回给服务器的 cookie 来完成,这个 cookie 包含了 session id。

再以餐厅为例,店员(服务器)为你准备了一张订单(Session对象),上面记载了你点的餐(用户信息),单子上写着你的名字(Session ID),并与你身上的便签(Cookie)上的名字相符。这样你就可以随时离开餐厅,并在返回时继续点餐,而店员还能按照订单为你服务。

只不过,在这里的“订单”,也就是 Session,是储存在服务器一方。这是由于 Cookie 的安全性并不足以存储所有类型的信息,特别是一些私敏信息,这就需要 Session 来进行专门的储存和处理。

Cookie 与 Session 有何区别?

  1. 存储位置不同:Cookie 数据存放在客户的浏览器上,Session 数据放在服务器上。
  2. 存储内容不同:Cookie 不是很安全,人们在使用过程中可能会禁用 Cookie,所以重要的信息一般放在 Session 中进行。
  3. 存储容量不同:单个 Cookie 保存数据不能超过 4K
    ,Session 没有这个限制。

Cookie 和 Session 的联系

我们知道,HTTP 协议本身是无状态的,也就是说,服务器无法知道用户上一次做了什么。 这样在处理如用户登录状态这样的问题上就显得非常无能为力。而 Cookie 和 Session,就是为了解决这个问题诞生的两种技术。

当用户第一次访问服务器时,服务器会为用户创建一个 Session,并生成一个唯一对应的 SessionID,然后把这个 SessionID 设置在响应的 Set-Cookie 字段中交由浏览器保存,浏览器在下一次请求时,会带着这个含有 SessionID 的 Cookie 发送给服务器,服务器就能通过这个 SessionID 找到上一次为用户保存的 Session,进而利用它提供连续的服务。

所以说,Session 和 Cookie 是紧密相关的,Cookie 作为载体承载 SessionID 的传递,而 Session 使用这个 SessionID 来区分是哪一个用户在与服务器交互。

各自的应用场景

Cookie 更适用于保存一些非敏感的、量小但需要长时间保存在客户端的信息。例如,为了优化用户体验,记住一个用户是否访问过该网站就需要用到 Cookie。

Session 更适用于存储一些敏感信息,例如,如果你在商城中购物,为保存购物车信息,或者你登录一个网站,为保存登录状态,那么就需要用到 Session。

总的来说,Cookie 适合存储一些客户端具体的、少量的信息,而 Session 适合保存一次会话过程中需要使用的信息。在实际应用过程中,根据需求的不同,我们可能会单独使用它们,也可能会结合使用。

但是在现在前后端分离的架构中,用的越来越多的反而不是 Cookie 和 Session 了,而是 Token 和 JWT。你知道为什么吗?

如果你想知道 Token 和 JWT 的相关知识,请在下方留个言,人多的话,下篇文章就安排一下。


最后说个事
公号算法变了,为防止看不到我的更新
大家帮忙加个星标
点击上方的公众号卡片
再点右上角三个点
就能看到设为星标
算我跪下来求你们

往期精选:

微信,看看你的另一半跟谁聊天频繁!

让你的微信“拍一拍”有趣且不失风度

微信年度账单来了,不敢看!

张万林,下雪了……我用编程带你看场纷飞大雪

还在使用默认的微信图标?赶紧换个吧!

我的微信和你们的不一样!?

文章转载自蒲东平,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论