Cookie 是浏览器按域名和路径管理的小型键值数据。服务端通过 Set-Cookie 写入,符合条件时浏览器在后续请求中自动携带 Cookie 请求头。
常见属性:
Expires / Max-Age:有效期。Domain / Path:发送范围。Secure:仅通过 HTTPS 发送。HttpOnly:禁止 JavaScript 读取,降低 Token 被 XSS 窃取的风险。SameSite:限制跨站请求携带 Cookie。SameSite=None 必须同时设置 Secure。
传统 Session 流程:
优点是服务端可以主动吊销;缺点是集群环境需要共享 Session、粘性会话或集中存储。
Token 通常由前端显式放入 Authorization: Bearer ...。JWT 是一种 Token 格式,不等于完整认证方案。
JWT 的 payload 默认只是 Base64URL 编码,不是加密,不能存放密码等敏感信息。签名用于校验完整性和签发者,并不会隐藏内容。
SameSite 并考虑 CSRF。不存在脱离场景的绝对答案。高价值 Web 会话通常优先考虑 Secure + HttpOnly + SameSite Cookie,并同时做好 XSS、CSRF 和服务端鉴权。
多个请求同时发现 Token 过期时,应使用“单飞锁”:只允许一个刷新请求执行,其他请求等待同一个 Promise,避免刷新风暴。
刷新失败后要清理本地身份并跳转登录,不能无限重试。
HttpOnly 能否防止 XSS 发起恶意请求?