react 18 不管理 cookie 有效期,需后端通过 set-cookie 的 expires/max-age 决定;前端应正确设置、读取和清理,禁用 document.cookie 手动操作,敏感 cookie 必须由后端下发并配 secure、samesite、httponly。

React 18 本身不处理 Cookie 的有效期管理——这是浏览器和后端共同决定的行为。前端能做的,是**正确设置、读取和清理 Cookie 的过期时间参数**,并配合安全属性防止被滥用。关键不在 React 版本,而在你如何调用 Cookie API。
有效期设置必须由服务端主导
真正决定 Cookie 是否“过期”的,是服务端响应头中的 Set-Cookie 字段。例如:
Set-Cookie: auth_token=abc123; Expires=Wed, 24 Sep 2026 10:00:00 GMT; HttpOnly; Secure; SameSite=Strict
这个 Expires(或 Max-Age)值由后端生成,前端无法篡改。React 18 应用只需确保:请求时携带该 Cookie,且不自行覆盖或误删。
前端设置 Cookie 时的过期时间规范
如果确需前端临时写入(如记住用户偏好),应使用 js-cookie 等库统一管理,避免手拼字符串出错:
- 用 expires 传数字(天数)或 Date 对象,不要手动拼 UTC 字符串
- 避免设为负数或过去时间来“删除”——应调用
Cookies.remove(),它会自动设过期时间为 1970 年 - 敏感 Cookie(如登录态)绝不应在前端设置有效期,必须由后端下发
React 18 中的常见陷阱
React 18 的批处理机制和异步更新不会影响 Cookie 生效逻辑,但容易引发误判:
- 在 useEffect 或事件回调中连续多次
Cookies.set(),不会合并成一次写入——每次都是独立 DOM 操作 - 不要依赖
document.cookie立即读取刚 set 的值:同域下通常可读,但若带 HttpOnly 则前端根本读不到 - SSR 场景(如 Next.js)中,
document不存在,直接操作会报错;需用typeof window !== 'undefined'守卫
安全有效期的配套配置
仅设 Expires 不够,必须同步启用防护属性:
- Secure:强制仅 HTTPS 传输,防止明文泄露
- SameSite=Strict/Lax:防御 CSRF,推荐 Lax 作为平衡点
- HttpOnly:后端设置,禁止 JS 访问,切断 XSS 窃取路径
- 避免 domain=.example.com 过度共享,除非明确需要跨子域











