【问题标题】:Cookie does not persist across redirect in productionCookie 不会在生产中的重定向中持续存在
【发布时间】:2022-07-09 15:59:34
【问题描述】:

我正在构建一个使用 cookie 来跟踪用户会话的 Web 应用程序。这些 cookie 在本地主机上的开发中完美地工作,但它们在生产中无法正常工作。我怀疑这是因为我的一些 cookie 设置配置错误,但我不确定是哪个。

需要注意的一点是,webapp 运行在 app.goldsky.com,而 api 运行在 api.goldsky.io(注意不同的 TLD)。

我正在构建的应用程序使用名为WorkOS 的工具进行用户身份验证。

认证流程如下:

  1. 用户访问网站,输入他们的电子邮件并按下登录按钮
  2. 请求发送到后端 (api.goldsky.io)
  3. 后端使用 WorkOS SDK 生成一个身份验证 URL(api.workos/... 形式)并将其发送到前端
  4. 前端导航到此 WorkOS 身份验证 URL 并继续执行身份验证流程
  5. 如果成功,WorkOS 会将用户重定向到我的后端 (api.goldsky.io/auth/workos/callback)
  6. 我的后端生成会话令牌,使用会话令牌 (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


    【解决方案1】:

    原来我遇到了一个 nginx 配置错误的问题,它拒绝了对特定路径的请求。 Nginx 只允许对/auth 和其他一些人的请求。我的登录逻辑在/auth 下,但用户查询在/user,nginx 拒绝了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-15
      • 1970-01-01
      • 1970-01-01
      • 2015-01-28
      • 2016-04-14
      • 1970-01-01
      相关资源
      最近更新 更多