What is cookie? 浏览器cookie科普

## Cookies 是什么?
Cookie,直译为饼干。作为浏览器中的一个小功能,它并没有像其他的功能一样被翻译为中文。我们即便在中文浏览器设置中,依旧可以找到这个单词。那么Cookie到底是什么呢?
简单来说,Cookies是一种小型文本信息。比如说用户名和密码,以及搜索记录等等都会存储在其中。互联网服务提供者为了定制化,便捷化的用户服务,提供更好的浏览体验,所以发明了这一功能。
## Cookies的运作机制
当你访问一个网站时,浏览器会与该网站的服务器进行通信,并在这个过程中涉及到Cookies的产生和使用过程。以下是Cookies产生和使用的详细过程,包括具体的内容和文件存储位置:
1. 发起HTTP请求:当你在浏览器中输入网址或点击链接时,浏览器会向目标网站的服务器发送HTTP请求,请求网页内容。
2. 服务器响应:服务器接收到浏览器发送的HTTP请求后,会根据请求的内容生成并返回相应的网页内容。在服务器响应中,服务器可以通过HTTP头部设置Cookie。
3. 生成Cookie:当服务器向浏览器发送HTTP响应时,如果服务器需要在你的计算机或设备上存储一些信息以便后续请求使用,它会在HTTP头部添加一个名为"Set-Cookie"的字段。
4. Cookie内容:Cookie是由名称和值组成的小文本数据,用于存储网站在你访问过程中需要保持的信息。Cookie还可以包含一些附加属性,如过期时间、域名、路径、安全性等。
5. 存储Cookie:一旦浏览器接收到来自服务器的HTTP响应,并包含了"Set-Cookie"字段,它会将该Cookie存储在你的计算机或设备上。存储的位置取决于不同的浏览器和操作系统:
- 在Windows上,大多数浏览器的Cookie存储位置通常是:C:\Users\<用户名>\AppData\Roaming\<浏览器名称>\Cookies
- 在macOS上,大多数浏览器的Cookie存储位置通常是:/Users/<用户名>/Library/Application Support/<浏览器名称>/Cookies

- 在Linux上,大多数浏览器的Cookie存储位置通常是:/home/<用户名>/.config/<浏览器名称>/Cookies
6. 后续请求:当你在同一网站上浏览其他页面时,浏览器会自动将之前存储的Cookie信息附加在HTTP请求的头部中,并发送给服务器。这样,服务器就可以根据Cookie中的信息来识别你,并提供个性化的内容或保持你的登录状态等。
7. 服务器处理Cookie:服务器接收到包含Cookie的HTTP请求后,会解析其中的Cookie信息,并根据需要做出相应的响应,例如保持你的登录状态、根据你的偏好提供个性化内容等。
8. Cookie的过期与清除:Cookie可以设置过期时间,使其在一定时间后失效。过期时间可以由服务器设置,在Cookie过期后,浏览器将不再发送该Cookie的信息给服务器。另外,你也可以在浏览器中手动删除Cookie,清除自己的浏览器历史记录或Cookie文件,以清除之前存储的Cookie信息。
## Cookies的发展历史
20世纪90年代初:
- 互联网刚刚兴起,人们开始使用Web浏览器来浏览网页。
- 但网站没有办法记住用户,每次用户浏览网站时都需要重新登录或输入信息。
1994年:
- Netscape浏览器的程序员Lou Montulli发明了Cookie。
- Cookie是一种小文本文件,可以存储在用户的计算机里,像小便签一样记录信息。

1995年:
- Cookie被正式加入Netscape Navigator 2.0浏览器,成为一个标准特性。
- 其他浏览器也开始支持Cookie,让它在互联网上广泛使用。
1997年:
- Internet Engineering Task Force (IETF)发布了RFC 2109,将Cookie正式标准化。
- Cookie的格式、过期时间等细节被规范化,使其更加可靠和实用。

> RFC代表"Request for Comments",它是一系列文档,记录了有关互联网标准、协议、技术和相关主题的规范、建议和经验。
> RFC 2109是一份由Internet Engineering Task Force(IETF,互联网工程任务组)发布的文档,题为"HTTP State Management Mechanism",即"HTTP状态管理机制"。该文档于1997年发布,定义了Cookie的标准规范,并为HTTP协议中的状态管理提供了一种机制。
> 该RFC主要描述了如何在HTTP请求和响应中使用Cookie来管理客户端和服务器之间的状态信息。它规定了Cookie的格式、属性和处理方法,以确保不同Web浏览器和服务器之间的Cookie行为一致性,从而实现更好的互操作性。
2000年代:
- 随着Cookie的普及,开发者开始在Web上实现更复杂的功能和服务。
- Cookie成为网站提供个性化体验、保持用户登录状态等重要工具。
2011年:
- 随着HTML5的发展,新的Web存储API出现,如LocalStorage和SessionStorage。
- 尽管Cookie仍然重要,但新的存储API为开发者提供了更多选择。

> LocalStorage和SessionStorage都是HTML5中提供的Web存储API,它们允许网页在浏览器中本地存储数据,用于在用户会话期间(或更长时间)保持信息,而不需要发送到服务器。
今天:
随着用户对隐私的关注,一些国家和地区出台了相关法规来保护用户隐私。访问一些国外的网站时,大多数会出现cookies的许可询问。

## Cookies相关立法
Cookies的使用受到多个国家和地区的法律法规限制,主要目的是保护用户的隐私和个人信息。
1. 欧洲联盟的《电子隐私指令》(Directive 2002/58/EC,也称为“ePrivacy指令”):这项指令规定了欧盟成员国在处理个人数据和保护隐私方面的规则,其中包括对Cookies的使用要求。
- 根据这个指令,网站在使用非必要的Cookie时,必须事先获得用户的明确同意。
- 欧盟成员国通常将这个指令转化为国家法律,并对违反法规的行为进行处罚。
PDF地址:https://edps.europa.eu/sites/edp/files/publication/dir_2002_58_en.pdf

2. 欧洲联盟的《通用数据保护条例》(General Data Protection Regulation,GDPR):这是欧盟于2018年实施的一项法规,旨在保护个人数据的处理和隐私。
- 根据GDPR,网站必须明确告知用户他们使用的Cookie类型,目的以及如何处理个人数据。
- 用户必须能够选择是否接受非必要的Cookie,以及随时撤销同意并删除已存储的Cookie。
PDF地址:https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/uri=CELEX:32016R0679

3. 美国的《电子隐私权通信法》(Electronic Communications Privacy Act,ECPA):这是一项美国联邦法律,旨在保护电子通信的隐私。
- ECPA规定了在没有用户同意的情况下,网站不能未经授权地获取或使用电子通信(包括Cookie)的内容。
PDF地址:https://www.oas.org/es/sla/ddi/docs/EUA6%20Electronic%20Communication%20Privacy%20Act.pdf

4. 加拿大的《个人信息保护与电子文件法》(Personal Information Protection and Electronic Documents Act,PIPEDA):这是加拿大的个人信息保护法律。
- PIPEDA规定了组织(包括网站)必须获取用户明确同意来收集、使用或披露他们的个人信息,包括使用Cookie。
PDF地址:https://laws-lois.justice.gc.ca/pdf/p-8.6.pdf

5. 其他国家和地区:除了欧洲和美加等地的法规,许多其他国家和地区也制定了类似的隐私保护法规,以保护用户的个人信息和隐私权。
## 小结
随着互联网的发展,开发者开始在Web上实现更复杂的功能和服务,使Cookies成为网站提供个性化体验、保持用户登录状态等重要工具。然而,随着用户对隐私的关注,一些国家和地区制定了法律法规来保护用户隐私,要求网站在使用非必要的Cookie时必须事先获得用户的明确同意。总体来说,Cookies在互联网中扮演着重要角色,为用户提供便利和个性化体验的同时,也需要在法律框架下保护用户隐私权。