作者: 懿 来自:Java极客技术
图中的 a 段 ,当我们在第一次访问 Web 网站的时候, Web 服务器对我们现在过去的用户信息一无所知。
Web 服务器希望这个用户会再次回来,所以想给这个用户“拍上”一个独有的 cookie,这样以后它就可以识别出这个用户了。cookie 中包含了一个由名字 = 值(name=value)这样的信息构成的 任意列表,并通过 Set-Cookie 或 Set-Cookie2 HTTP 响应(扩展)首部将其贴到用户身上去。
但是 Cookie 中能存储的信息,绝对不会只是 ID 号,相信大家做开发的,也肯定知道 Cookie 能存什么,比如说,
Cookie: name=”Brian Totty”; phone=”555-1212″
我存了个这东西,它也是允许的。
浏览器会记住从服务器返回的 Set-Cookie 或 Set-Cookie2 首部中的 Cookie 内容,并将 Cookie 集存储在浏览器的 Cookie 数据库中(把它当作一个贴有不同国家贴纸的旅行箱)。将来用户返回同一站点时图中的 c 段,浏览器会挑中那个服务器贴到用户上的那些 Cookie,并在一个 Cookie 请求首部中将其传回去。
这就是 Cookie 的工作原理,Cookie 就像服务器给用户贴的“嗨,我叫”的贴纸一样。用户访问一个 Web 站点时,这个 Web 站点就可以读取那个服务器贴在用户身上的所有贴纸。
4.Cookie罐
说实话哈,我在看到这个名词的时候,第一反应就是,翻译书籍的作者,有点懵人呀,直接这么翻译,不太负责任呀,后来发现,这么翻译,确实也是有一定道理的,原因如下:
因为 Cookie 的基本思想就是让浏览器积累一组服务器特有的信息,每次访问服务器时都将这些信息提供给它。浏览器内部的 Cookie 罐总可以有成百上千个 Cookie,也是因为浏览器要负责存储 Cookie 信息,所以此系统被称为客户端侧状态 (client-side state)。这个 Cookie 规范的正式名称为 HTTP 状态管理机制(HTTP state management mechanism)。
我猜测因为它能够存储如此多的 Cookie ,所以当时书中的作者就翻译成了 Cookie 罐,这么想起来,也是很有道理的。