为什么跨域的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:4000
和 localhost:3000
不是同一个域。
最常见的解决方案是使用 webpack-dev-server
。这个dev-server会负责两件事
- 提供静态文件(您的单页应用程序)。
- Proxy API 向您的 API 服务器请求。
因此您需要将其作为前端开发环境的一部分来实现。
大家好,
经过几个小时的谷歌搜索并尝试了我能找到的所有方法后,我还没有找到解决问题的办法。
我正在尝试将 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:4000
和 localhost:3000
不是同一个域。
最常见的解决方案是使用 webpack-dev-server
。这个dev-server会负责两件事
- 提供静态文件(您的单页应用程序)。
- Proxy API 向您的 API 服务器请求。
因此您需要将其作为前端开发环境的一部分来实现。