HTTP协议之涉及到cookie字段

1,117 阅读2分钟

1. 定义 (随便看看就行)

cookie是管理服务器和客户端的状态,以及用户识别。
在用户访问网站时,服务器会在客户端临时写入一些信息,当用户再次访问该网站时会自动携带这些信息,服务器就可以识别用户
调用cookie时,会校验有效期(expires),发送方域名,路径,协议等信息,正常情况是不会因来自其他web站点和攻击者的攻击而泄漏

2. 同站(same site) 和 跨站(cross site)

  • 同站(same site):顶级域名相同站点,跟端口无关,比如大公司,一个顶级域名下有很多子域;
  • 跨站(cross site):非同站

3. 同源(same origin)和跨域(cross origin)

  • 同源(same origin): 协议,域名,端口号完全相同
  • 跨域(cross origin): 非同源,违反三项中一项

4. 字段名称

请求字段(request): Cookie 响应字段(response): Set-Cookie

5. Set-Cookie详解各个字段

例如:set-cookie: username=zhangsan; Max-Age=7775999; Domain=test.com; Path=/;HttpOnly; SameSite=None; Secure

  • secure: 只有https才会回收cookie, http协议不会回收cookie, 省略secure,不管http还是https都会回收cookie

  • HttpOnly: 使javascript浏览器,可以读取,但是无法操作cookie,防止跨站脚本攻击(Cross-site scripting,XSS),

  • SameSite: 就是控制那些跨站可以携带cookie, 防御CSRF攻击,不要采用SameSite默认,跨浏览器的默认行为不一致

SameSite=Strict/Lax/None
Strict: 严格模式,只有同站才能发送cookie
Lax: relax缩写,宽松模式,只有安全的跨站可以发送cookie
None: 禁止samesite的限制,必须配合secure才能使用;`SameSite=None; Secure`;

-- Max-Age: 过期时间,eg: Max-Age=604800,表示cookie过期的秒数,Max-Age=0,会立即删除cookie, Max-Age为正数,表示过期时间,Max-Age为负数,表示会话cookie,即关闭浏览器失效 -- Expires: 过期时间,Expires=Wed, 08 Aug 2021 00:00:00 GMT,缺省的时候表示会话型cookie -- Domain: cookie可以送达的主机名,Domain=baidu.com; -- Path: Path=/main, /main/web/ 下的资源会带 Cookie 首部, /test不会携带