由于HTTP本身是无状态的,服务端无法区分谁是谁,所以有了cookie的概念。cookie的作用之一也就是区分用户,存储用户信息。
cookie来去
cookie由服务端在响应头中通过set-cookie下发,浏览器接收到后,会自动将cookie中的字段保存起来,下次再发起请求时会自动在请求头中携带cookie
cookie的属性
- Domain:cookie的作用域,默认
/
从A域名得到的cookie数值只有在请求A域名相关地址/接口时才会携带。未设置时,与document.domain或者location.hostname相等。 - path:可以共享 Cookie 的子目录,默认
/
根目录。 - Expires/Max-Age:有效期,不设置则关闭浏览器时自动清空cookie,Expires绝对时间,Max-Age相对时间(秒)。Max-Age优先级较高。
- HttpOnly:为true时,不可被JavaScript获取到。
- sameSite:限制第三方cookie的发送场景
跨域携带cookie需求满足以下条件
- 客户端请求头携带
withCredentials = true
- 服务端设置
- Access-Control-Allow-Origin: 特定域名
- Access-Control-Allow-Credentials: true
- samesite: none