【问题标题】:Set Cookie with Nextjs and Vercel使用 Nextjs 和 Vercel 设置 Cookie
【发布时间】:2022-01-11 16:53:33
【问题描述】:

我有一个使用未设置 cookie 的 Vercel 部署的 NextJs 应用程序。我进入控制台 > 网络,可以看到请求的状态为 200,并且 set-cookie 值存在且没有警告。我检查了控制台 > 应用程序 > Cookies 并没有找到 cookie。我在 StackOverflow 和 Github 上发现了一些类似的问题,但答案非常有限,似乎并没有促使我找到解决方案。

我的域名结构是这样的:

domain.com
api.domain.com
subdomain.domain.com
nextapp.domain.com -> deployed through vercel

域和子域应用程序是通过 AWS 部署的标准 React 应用程序,API 是 nodejs (express) 应用程序。我对域和子域应用程序设置的 cookie 没有任何问题,所以我相信这是由 Vercel 引起的问题。我的 API 响应如下所示:

res.status(200).cookie('token', token, { httpOnly: true }).json(...) 

设置了这些 cors 选项

app.use(cors({
  origin: true,
  credentials: true
})

我尝试在以下响应中更新 cookie 选项,但都没有效果。

{ httpOnly: true, sameSite: false, secure: true }
{ httpOnly: true, sameSite: 'none', secure: true } 

Vercel 中是否有一些我应该注意的遗漏?

编辑

看起来这实际上可能是 Next.JS 的问题。我没有在 Next.js 中使用 API 层。我的请求如下所示:

try {
  let response = await axios.post('https://api.domain.com/login', params, { withCredentials: true } )
} catch(error) {
  ...
}

【问题讨论】:

    标签: node.js reactjs express next.js vercel


    【解决方案1】:

    该问题与 NextJS 或 Vercel 无关。当我在 api 上设置我的 cookie 时,我需要像这样添加域:

    res.status(200).cookie('token', token, { httpOnly: true, domain: process.env.NODE_ENV === 'development' ? '.localhost' : '.domain.com' }).json(...)
    

    它按预期设置。我不确定为什么无论我的域和子域请求如何仍然设置 cookie,但是仍然在我的 nextjs.domain 上设置了添加的域

    【讨论】:

      猜你喜欢
      • 2022-01-26
      • 2021-03-16
      • 2019-11-10
      • 2020-10-26
      • 1970-01-01
      • 2019-12-24
      • 2022-01-09
      • 2022-01-02
      • 2021-04-19
      相关资源
      最近更新 更多