【发布时间】:2022-07-09 15:59:34
【问题描述】:
我正在构建一个使用 cookie 来跟踪用户会话的 Web 应用程序。这些 cookie 在本地主机上的开发中完美地工作,但它们在生产中无法正常工作。我怀疑这是因为我的一些 cookie 设置配置错误,但我不确定是哪个。
需要注意的一点是,webapp 运行在 app.goldsky.com,而 api 运行在 api.goldsky.io(注意不同的 TLD)。
我正在构建的应用程序使用名为WorkOS 的工具进行用户身份验证。
认证流程如下:
- 用户访问网站,输入他们的电子邮件并按下登录按钮
- 请求发送到后端 (
api.goldsky.io) - 后端使用 WorkOS SDK 生成一个身份验证 URL(
api.workos/...形式)并将其发送到前端 - 前端导航到此 WorkOS 身份验证 URL 并继续执行身份验证流程
- 如果成功,WorkOS 会将用户重定向到我的后端 (
api.goldsky.io/auth/workos/callback) - 我的后端生成会话令牌,使用会话令牌 (
goldsky_session=...) 设置安全的 httpOnly path=/cookie,并将用户重定向回 web 应用程序 (app.goldsky.com)
在本地主机中,这一切都完美无缺。但是,在生产中,我看不到第 6 步完成后 cookie 仍然存在。
在生产中,对第 5 步的响应包含 cookie
然而,在重定向回 webapp 之后,cookie 似乎消失了。这是对app.goldsky.com 的请求(来自第 6 步的重定向),它没有 cookie 标头。
为了完整起见,这里是app.goldsky.com 的 cookie 屏幕截图 - 它是空的:
相比之下,localhost 上的最终重定向包含 cookie:
为什么我的 cookie 在从 api.goldsky.io 重定向到 app.goldsky.com 后没有保留?我需要为 cookie 设置Domain 属性吗?如果是这样,我应该将其设置为什么?也许这是SameSite 的问题?
【问题讨论】:
标签: http cookies http-headers