登录
首页 >  Golang >  Go问答

为什么我的浏览器没有设置我的网站 cookie?

来源:stackoverflow

时间:2024-04-20 15:00:38 299浏览 收藏

小伙伴们有没有觉得学习Golang很有意思?有意思就对了!今天就给大家带来《为什么我的浏览器没有设置我的网站 cookie?》,以下内容将会涉及到,若是在学习中对其中部分知识点有疑问,或许看了本文就能帮到你!

问题内容

您好,我正在开发一个具有微服务架构的网络应用程序。

我在后端使用 golang (Fiber),在前端使用 Next.js。

当我从 restaurant.quiqr.co/signinapi.quiqr.co/auth/signin 发送请求时,我会在响应旁边发送一个 Cookie来自包含 jwt 令牌的 api.quiqr.co。 Postman 上一切正常,我可以看到 cookie 被存储并随任何后续请求一起发送。

但是当涉及到网络浏览器时,我的 cookie 没有被存储。可能是什么问题?

我正在使用 kubernetes 和 Ingress nginx,但正如我之前提到的,一切都可以在 Postman 上运行。

我尝试将 cookie 域修改为 .quiqr.corestaurant.quiqr.co,但这不起作用,我什至尝试了所有 SameSite 属性,但没有任何效果。

唯一有效的解决方案是将它们全部放在同一个域下。例如:quiqr.co/api/auth/signinquiqr.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学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>