EN
返回档案库

案例库 · 软件与 IT · 技术决策 · 1994-2011

Netscape 的 Cookie 将会话状态存储在浏览器中,让无状态的 HTTP 能维护购物车

Netscape 将会话令牌移入客户端持有的 Cookie,使无状态的服务器仍能运行购物车。

Netscape

那一手

问题在于 HTTP 没有记忆:商店无法知道是谁在请求购物车。显而易见的修复是服务器端会话,即服务器维护一个把会话 ID 与购物车关联的表格。但只有在服务器数量较少时可行,因为每个请求必须命中持有状态的同一台机器。

Netscape 的卢·蒙图利把状态移到了浏览器端。Cookie 是服务器交给客户端的一个小令牌,浏览器必须在每次请求时原样送回。MCI 在构建电子商务应用时,正是要求 Netscape 提供这样的机制,这样其服务器就不必保存部分交易状态。

结果是,有状态的东西在无状态的协议中传输。任意服务器都可以接受任意请求,读取 Cookie,重构购物车。这个选择让 HTTP 保持了简单,同时又提供了电子商务所需的内存。

为什么管用

  • 因为状态随客户端携带,所以请求无需路由到特定服务器,这使商店可以水平扩展,而无需会话亲和性。
  • 浏览器免费负责记忆,因此协议无需改动;这个修复正好适合现有头部。
  • 它也成为广告商需要的追踪机制,这也是为什么每个网站都迅速采用它。
  • MCI 的具体要求(服务器不得保留部分交易状态)为 Netscape 提供了真实的约束条件。
值了多少将会话状态移入客户端;浏览器会原样回传。聪明

可以搬走什么

要为无状态系统增加状态,就把状态移到与每次交互随行的那端,而不是构建更庞大的服务器端会话存储。

后来呢

1994 年 10 月,Cookie 随 Mosaic Netscape 发布,1995 年进入 Internet Explorer。IETF 工作组在 1997 年将其标准化为 RFC 2109,2011 年标准化为 RFC 6265。它们成为 Web 上携带会话和身份的默认方式,但也是第三方追踪的机制,后来引发了隐私监管和 2020 年代的 Cookie 弃用之争。

资料来源

发现哪里写错了?告诉我们。

同一路聪明