当前位置: > > > > 为什么我的浏览器没有设置我的网站 cookie?
来源:stackoverflow
2024-04-20 15:00:38
0浏览
收藏
小伙伴们有没有觉得学习Golang很有意思?有意思就对了!今天就给大家带来《为什么我的浏览器没有设置我的网站 cookie?》,以下内容将会涉及到,若是在学习中对其中部分知识点有疑问,或许看了本文就能帮到你!
问题内容
您好,我正在开发一个具有微服务架构的网络应用程序。
我在后端使用 golang (Fiber),在前端使用 Next.js。
当我从 restaurant.quiqr.co/signin 向 api.quiqr.co/auth/signin 发送请求时,我会在响应旁边发送一个 Cookie来自包含 jwt 令牌的 api.quiqr.co。 Postman 上一切正常,我可以看到 cookie 被存储并随任何后续请求一起发送。
但是当涉及到网络浏览器时,我的 cookie 没有被存储。可能是什么问题?
我正在使用 kubernetes 和 Ingress nginx,但正如我之前提到的,一切都可以在 Postman 上运行。
我尝试将 cookie 域修改为 .quiqr.co 或 restaurant.quiqr.co,但这不起作用,我什至尝试了所有 SameSite 属性,但没有任何效果。
唯一有效的解决方案是将它们全部放在同一个域下。例如:quiqr.co/api/auth/signin和quiqr.co/restaurant/signin,返回的cookie将有一个.quiqr.co strong> 域名,一切都会正常工作。
我还意识到,当我这样做时,浏览器不会发送预检请求,但如果我再次将它们分离到子域,浏览器将发送预检请求并且返回的cookie不会被存储。
那么这里可能存在什么问题呢?谢谢。
两个请求 – 预检和 xhr
xhr请求内容
我的开发工具中没有 cookie
正确答案
我也遇到了同样的问题,只是查看了文档并发现了这一点。我们需要使用cors中间件来设置cors
app.Use(cors.New(cors.Config{ AllowOrigins: "http://localhost:5173, http://localhost:5174", AllowHeaders: "Origin, Content-Type, Accept", AllowCredentials: true, }))
allowcredentials:true 才是最重要的!
希望对您有帮助!
以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持!更多关于Golang的相关知识,也可关注公众号。