Ryn*_*yne 1 node.js express reactjs next.js vercel
我有一个使用 Vercel 部署的 NextJs 应用程序,但未设置 cookie。我进入控制台 > 网络,可以看到请求的状态为 200,并且 set-cookie 值存在且没有任何警告。我检查控制台 > 应用程序 > Cookie,但未找到 cookie。我在 StackOverflow 和 Github 上发现了一些类似的问题,但答案非常有限,似乎并没有促使我找到解决方案。
我的域结构是这样的:
domain.com
api.domain.com
subdomain.domain.com
nextapp.domain.com -> deployed through vercel
Run Code Online (Sandbox Code Playgroud)
域和子域应用程序是通过AWS部署的标准React应用程序,API是一个nodejs(express)应用程序。我对域和子域应用程序设置的 cookie 没有任何问题,因此我相信这是由 Vercel 引起的问题。我的 API 响应如下所示:
res.status(200).cookie('token', token, { httpOnly: true }).json(...)
Run Code Online (Sandbox Code Playgroud)
设置了这些 cors 选项
app.use(cors({
origin: true,
credentials: true
})
Run Code Online (Sandbox Code Playgroud)
我尝试更新以下响应中的 cookie 选项,但都没有效果。
{ httpOnly: true, sameSite: false, secure: true }
{ httpOnly: true, sameSite: 'none', secure: true }
Run Code Online (Sandbox Code Playgroud)
Vercel 中是否存在我应该注意的遗漏内容?
编辑
看起来这实际上可能是 Next.JS 的问题。我没有在 Next.js 中使用 API 层。我的请求看起来像这样:
try {
let response = await axios.post('https://api.domain.com/login', params, { withCredentials: true } )
} catch(error) {
...
}
Run Code Online (Sandbox Code Playgroud)
该问题与 NextJS 或 Vercel 无关。当我在 api 上设置 cookie 时,我需要添加如下域:
res.status(200).cookie('token', token, { httpOnly: true, domain: process.env.NODE_ENV === 'development' ? '.localhost' : '.domain.com' }).json(...)
Run Code Online (Sandbox Code Playgroud)
它按预期设置。我不确定为什么无论我的域和子域请求如何仍然设置 cookie,但尽管如此,它在我的 nextjs.domain 上设置了添加的域
归档时间: |
|
查看次数: |
6567 次 |
最近记录: |