19 | 让我知道你是谁:HTTP的Cookie机制
Oct 30 · 10min
归纳
- Cookie 是服务器委托浏览器存储的一些数据,让服务器有了“记忆能力”;
- 响应报文使用 Set-Cookie 字段发送“key=value”形式的 Cookie 值;
- 请求报文里用 Cookie 字段发送多个 Cookie 值;
- 为了保护 Cookie,还要给它设置有效期、作用域等属性,常用的有 Max-Age、Expires、Domain、HttpOnly 等;
- Cookie 最基本的用途是身份识别,实现有状态的会话事务。
什么是cookie
帮助服务器有了记忆的功能。
cookie的工作
响应头字段 Set-Cookie 和请求头字段 Cookie。
格式为 key=value 的形式
不过因为服务器的“记忆能力”实在是太差,一张小纸条经常不够用。所以,服务器有时会在响应头里添加多个 Set-Cookie,存储多个“key=value”。但浏览器这边发送时不需要用多个 Cookie 字段,只要在一行里用“;”隔开就行。
cookie的属性
生命周期
- Expires: 俗称“过期时间”,用的是绝对时间点,可以理解为“截止日期”(deadline)
- Max-Age: 用的是相对时间,单位是秒,浏览器用收到报文的时间点再加上 Max-Age,就可以得到失效的绝对时间。
- Max-Age优先级高
cookie域
HttpOnly: 禁止js读取
SameSite: 可以防范“跨站请求伪造”(XSRF)攻击
Secure: 表示这个 Cookie 仅能用 HTTPS 协议加密传输,明文的 HTTP 协议会禁止发送。但 Cookie 本身不是加密的,浏览器里还是以明文的形式存在。
cookie应用
身份标识
- 比如,你用账号和密码登录某电商,登录成功后网站服务器就会发给浏览器一个 Cookie,内容大概是“name=yourid”,这样就成功地把身份标签贴在了你身上。
广告跟踪
CC BY-NC-SA 4.0 2021 © Promise L