Cookie 简介

171 阅读2分钟

这是我参与8月更文挑战的第28天,活动详情查看:8月更文挑战

Cookie 的定义:

  • Cookie 是服务器发送到用户浏览器并保存在本地的一小块数据。

注意:Cookie 只能由浏览器保存在本地,服务器是不能保存 Cookie 的。

  • 当浏览器向同一服务器再次发起请求时,会携带并发送已保存的 Cookie 给服务器。
  • 默认情况下,Cookie 只能被创建它的域读取。例如 www.qq.com 设置的 cookie 不能被 r.qq.com 读取。

Cookie 的常见用途:

  • 会话管理:用户登录状态、购物车、游戏分数或其它服务器需要记录的信息
  • 个性化设置:用户偏好设置、主题与其他设置
  • 浏览器行为跟踪:记录与分析用户行为

Cookie 的分类:

按照存储位置可分为内存 Cookie 和硬盘 Cookie

  • 内存 Cookie 由浏览器维护,保存在内存中,浏览器关闭后就消失了,其存在时间是短暂的。
  • 硬盘 Cookie 保存在硬盘里,有一个过期时间,除非用户手工清理或到了过期时间,硬盘 Cookie 不会被删除,其存在时间是长期的。
  • 所以,按存在时间分类,内存 Cookie 和硬盘 Cookie 分别对应于非持久 Cookie 和持久 Cookie

按设置 cookie 的网站分类,可以分为第一方 cookie 和第三方 cookie

  • 第一方 cookie:由当前访问网站设置的 cookie
  • 第三方 cookie:由当前访问网站以外的其他网站设置的 cookie

Cookie 的缺陷:

  • Cookie 会被附加在每个 HTTP 请求中,所以无形中增加了流量。
  • 由于在 HTTP 请求中的 Cookie 是明文传递的,所以安全性成问题,除非使用 HTTPS 协议。
  • Cookie 存在数量和大小的限制,对于复杂的存储需求来说是不够用的。

Cookie 数量和大小的限制

根据 RFC 2109 与各大浏览器厂商的规定,为了兼容尽可能多的浏览器,在使用 Cookie 时最好遵循以下数量和大小的限制:

  • 浏览器保存的Cookie 总数小于等于 300
  • 每个独立域名下的 Cookie 数量小于等于 20
  • 每个独立域名下的 Cookie 大小小于等于 4096 字节,安全起见,最好小于 4093 字节