Cookie

HTTP 协议是无状态的,目的是减少 CPU 内存消耗,让 HTTP 协议尽可能简单,能够处理大量事务。
HTTP/1.1 引入 Cookie 来保存状态信息。

Cookie 是服务器发送给客户端的数据,该数据会被保存在浏览器中。
在下一次发送请求时,通过 Cookie 让服务器识别出客户端,从而实现保持登录状态等功能。

1. 创建过程

服务器响应报文包含 Set-Cookie 字段,客户端解析为 Cookie 保存到浏览器。
客户端下次请求时,请求报文中包含 Cookie 字段。

注:
Cookie,Set-Cookie 和 Content-Disposition 等是RFC中定义的首部字段;
而请求,响应,通用,实体字段是 HTTP/1.1 首部字段。

2. Set-Cookie 值
属性 说明
name=值 赋予 Cookie 的名称和其值(必需项)
expires=日期 Cookie 的有效期(若不明确指定则默认为浏览器关闭前为止)
domain=域名 作为 Cookie 适用对象的域名(若不指定则默认为创建 Cookie 的服务器的域名)
path=路径 将服务器上的文件目录作为 Cookie 的适用对象(若不指定则默认为文档所在的文件目录)
Secure 仅在 HTTPS 安全通信时才会发送 Cookie
HttpOnly 加以限制,使 Cookie 不能被 JavaScript 脚本访问
3. Session 与 Cookie

Session 存在于服务器,Cookie 存在于客户端。
每个 Session 有一个 Session ID,用来唯一标识服务器上的某个 Session。
Cookie 中有一个键值对——「sid: Session ID」。

4. 浏览器禁用 Cookie

对 URL 进行重写,在 URL 后面加上 sid=xxx 。

5. 实现用户名和密码的自动填写

网站脚本从浏览器中的 Cookie 读取用户名和密码,从而实现自动填写。

你可能感兴趣的:(Cookie)