Cookie概念及类型
HTTP cookie,简称cookie,又称数码存根、“网站/浏览+魔饼/魔片”等,是浏览网站时由网络服务器创建并由网页浏览器存放在用户计算机或其他设备的小文本文件。Cookie使Web服务器能在用户的设备存储状态信息(如添加到在线商店购物车中的商品)或跟踪用户的浏览活动(如点击特定按钮、登录或记录历史)。
cookie 的起源
早期的 Web 应用面临的最大问题之一就是如何维持状态。简言之,服务器无法知道两个请求是否来自于同一个浏览器。当时,最简单的办法就是在请求的页面中插入一个 token,然后在下次请求时将这个 token 返回至服务器。这需要在页面的 form 表单中插入一个包含 token 的隐藏域,或者将 token 放在 URL 的 query 字符串中来传递。这两种方法都需要手动操作,而且极易出错。
当时网景通讯的一名员工 Lou Montulli,在 1994 年将 “magic cookies” 的概念应用到 Web 通讯中。他试图解决 Web 的第一个购物车应用,现在购物车成了购物网站的支柱。他的原始说明文档提供了 cookie 工作原理的基本信息,该文档后来被作为规范纳入到 RFC 2109(大多数浏览器的实现参考文档)中,最终被纳入到 RFC 2965 中。Montulli 也被授予 cookie 的美国专利。网景浏览器在它的第一个版本中就开始支持 cookie,现在所有 Web 浏览器都支持 cookie。
HTTP Cookie 类型
**会话 cookie:**这些 cookie 在用户访问网站时临时存储信息。它们存储在用户的浏览器中,通常在用户关闭浏览器时被删除。
**持久性 cookie:**即使在用户关闭浏览器后,这些 cookie 仍会保留在用户的计算机上。它们用于记住用户的偏好并帮助实现个性化。
**安全 cookie:**这些 cookie 有助于保护敏感信息,如密码和信用卡号。
**第三方 cookie:**这些 cookie 由第三方网站创建,可在多个网站上跟踪用户活动。
**Flash cookies:**这些 cookie 存储有关视频和音频文件的信息。它们存储在用户的计算机上,用于帮助流媒体。
Cookie原理
用户第一次请求服务器时,服务器返回一个带Set-Cookie(Set-Cookie1)首部的报文,值为键值对,描述了cookie的名字、值、域、路径等信息,然后客户端接下来每次访问服务器的时候都会带上一个Cookie首部的报文,它的值刚好是前面响应报文返回的名字键值对,从而达到验证用户身份的信息。
Cookie过程图:
cookie的设置以及发送过程:
- 客户端发送一个http请求到服务器端
- 服务器端发送一个http响应到客户端,其中包含Set-Cookie头部
- 客户端发送一个http请求到服务器端,其中包含Cookie头部
- 服务器端发送一个http响应到客户端
Cookie的属性
value属性
value属性是必需的,它是一个键值对,用于指定Cookie的值。