为什么跨域的HttpOnly Cookie 被浏览器接收到却没有被保存?

Why is a Cross-Domain HttpOnly Cookie received by the browser but not saved?

大家好,

经过几个小时的谷歌搜索并尝试了我能找到的所有方法后,我还没有找到解决问题的办法。

我正在尝试将 JWT 令牌保存在 HttpOnly cookie 中,但尽管我的服务器正确发送了 cookie,但它并未在浏览器中设置。

我在服务器端启用了 CORS,发送的 cookie 不是 Secure 具有 Path '/' 并且已设置 SameSite=none。域设置为 localhost 因为我的前端是 运行 和 HttpOnly=true.

cookie 被正确接收并且在 Chrome 中可见为 token=eyJ...hcP; Max-Age=31104000; Domain=localhost; Path=/; Expires=Thu, 05 Aug 2021 12:22:35 GMT; HttpOnly, SameSite=None

我猜问题是前端 运行 在 localhost:3000 上,后端在 localhost:4000.

非常感谢任何帮助,谢谢!

I'm guessing the problem is that the frontend is running on localhost:3000 and the backend on localhost:4000.

这就是答案。关于 cookie,localhost:4000localhost:3000 不是同一个域。

最常见的解决方案是使用 webpack-dev-server。这个dev-server会负责两件事

  1. 提供静态文件(您的单页应用程序)。
  2. Proxy API 向您的 API 服务器请求。

因此您需要将其作为前端开发环境的一部分来实现。