HTTP是无状态协议,它不对之前发生过的请求和响应状态进行管理,无法根据之前的状态进行本次请求处理。于是引入 Cookie 技术。
Cookie 技术通过在请求和响应报文中写入 Cookie 信息来控制客户端的状态。Cookie 会根据从服务器端发送的响应报文内的一个叫做 Set-Cookie 的首部字段信息,通知客户端保存 Cookie。当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入 Cookie值后发送出去。服务器端发现客户端送来的 Cookie 后,会去检查究竟是从哪一个客户端发来的连接请求,然后对比服务器上的记录,最后得到之前的状态信息。
Cookie 特点:
- 服务器通过 Set-Cookie 响应头设置 Cookie
- 浏览器得到 Cookie 之后,每次请求都带上 Cookie
- 服务器读取 Cookie 就知道登录用户的信息
- Cookie 只在所登录时使用的浏览器有效
- Cookie 存放位置:Windows 存在C盘一个文件
- Cookie 可以被篡改,不安全
- Cookie 有效期默认20分钟,但也由浏览器决定,而后端可以强制设置
- Cookie 遵守同源策略吗?
也有,不过跟 AJAX 的同源策略稍微有些不同。
当请求 qq.com 下的资源时,浏览器会默认带上 qq.com 对应的 Cookie,不会带上 baidu.com 对应的 Cookie。
当请求 v.qq.com 下的资源时,浏览器不仅会带上 v.qq.com 的Cookie,还会带上 qq.com 的 Cookie。