当代生活,我们在网上冲浪的时候经常能够看见网站给你发送一个「使用 cookie」的通知。
这玩意是个啥?贸然同意会有什么事情发生?
❶
在了解什么是「Cookie」之前,我们要了解一下网页是如何运行的。
当代互联网的繁荣很大程度上依赖于万维网技术的出现,而万维网的本质就是超文本信息的传输:我们在互联网上看到的所有信息,早期互联网主要由文字构成,这些文字被称作超文本;包括图片、音频、视频等等的多媒体资源则被称作超媒体,由超链接将网页连接在一起,构成了「互联网」这个人类奇迹。
而万维网基于 TCP/IP 协议,背后则有庞大的技术支撑着整个网络的运行,这些技术合称为 WEB 协议族,其中就包括重要的 HTTP 超文本传输协议。
HTTP 超文本传输协议解决的最主要问题,就是把网页上的超文本信息传输到本地浏览器的传送协议。
我们在上网的时候经常要输入一个网址,这个网址学名叫「URL 统一资源定位符」,每个网页都有自己单独的 URL,类似于菜名或者是地址,名和物是一一对应的。整个 HTTP 协议的工作原理也非常类似于点菜:
· 请求:浏览器向 WWW 服务器发出访问请求,类似于在饭馆跟服务员说「给我整个宫保鸡丁」;
· 回复:服务器接收到请求后会根据情况回复访问者请求,例如「正常上菜(正常访问)」、「做不了(无法访问)」、「不给你做(拒绝访问)」、「我们这是麦当劳,吃宫保鸡丁请去隔壁(重新定向)」;
· 关闭链接:回复完成之后,HTTP 协议要求服务器忘掉上一单操作,准备服务下一个请求,类似于你去同一个饭馆点一万次宫保鸡丁,在你第一万零一次来的时候服务员还是不记得你点了一万次宫保鸡丁。
这里出现了 HTTP 协议一个非常重要的特点:不保存上一次访问的具体信息,这在 HTTP 协议中被称作「Stateless 无状态协议」。正是无状态使得整个 HTTP 协议能够保持高效稳定的运行。
玩了一个同名梗
但是这样的操作对于网站来说很难记录单个用户的访问习惯与使用记录,无法对用户进行个性化的服务;对于用户来说虽然隐私得到了保护,但是使用上也有诸多不便,例如无法保存对不同网页的自定义设置、账户登录状态等等信息。
而 Cookie 正是用来解决「无状态」这个特点的。
❷
HTTP Cookie 是服务器发送到用户浏览器并保存在本地内的一小块数据,是一种小型文字档案,它会在浏览器下一次向同一服务器在发起请求时,被携带在请求上发送给服务器,进而服务器就能够记录和区分不同的请求来源了。