SameSite Cookie 设置后登录状态不生效是怎么回事?

百里雯清 阅读 6

我最近在 React 项目里处理登录逻辑,后端设置了 Set-Cookie 响应头,包含 SameSite=Lax 和 Secure。但我在本地开发时(http://localhost:3000)发现登录后 cookie 根本没被浏览器保存,导致后续请求都拿不到认证信息。是不是因为本地不是 HTTPS?可线上环境是 HTTPS 啊。

我用 fetch 发起登录请求的代码大概是这样:

fetch('/api/login', {
  method: 'POST',
  credentials: 'include',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({ username, password })
})

难道 SameSite=Lax 在 localhost 下会有问题?还是我漏了什么配置?

我来解答 赞 4 收藏
二维码
手机扫码查看
1 条解答
彦霞的笔记
本地开发用 HTTP 的话,设置 Secure 属性浏览器就不保存 cookie。开发环境关掉 Secure,或者后端针对 localhost 单独处理:
// 开发环境后端配置示例
const isDev = process.env.NODE_ENV === 'development';
res.cookie('token', token, {
httpOnly: true,
secure: !isDev, // 开发环境设为 false
sameSite: isDev ? 'lax' : 'lax'
});


或者本地装个 mkcert 之类的搞个本地 HTTPS 开发证书,一劳永逸。
点赞
2026-03-13 13:00