提问者:小点点

为什么一个跨域的HttpOnly Cookie被浏览器接收但没有保存?


大家好,

经过几个小时的谷歌搜索和尝试所有我能找到的方法,我仍然没有找到解决我的问题的方法。

我试图将JWT令牌保存在HttpOnly cookie中,但是尽管我的服务器正确地发送了cookie,但它在浏览器中没有设置。

我在服务器端启用了CORS,发送的cookie不是安全,具有路径'/',并且设置了samesite=none。 域被设置为localhost,因为我的前端在那里运行,并且httponly=true

cookie被正确接收,并且在Chrome中显示为token=eyj...hcp; 最大年龄=31104000; 域=localhost; 路径=/; 过期=2021年8月5日下午12:22:35 GMT; HttpOnly,samesite=none

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

如果有任何帮助,我将不胜感激,谢谢!


共1个答案

匿名用户

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

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

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

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

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