所以我有一个托管在domainA.com的后端golang gin api,我还有一个托管在domainB.com的前端Next.js Web应用程序。所以我有一个登录页面,用户将登录,获取调用将转到domainA,如果他们正确登录,则设置的cookie JWT将发送回客户端,以便cookie可以存储在浏览器上。我已将后端和前端的凭据设置为 true。前端获取看起来像这样
const resp = await fetch(
domainA + loginendPoint,
{
method: 'POST',
body: requestBody,
credentials: "include",
}
);
后端cors设置如下所示
r := gin.Default()
config := cors.DefaultConfig()
config.AllowAllOrigins = false
config.AllowOrigins = append(config.AllowOrigins, "http://localhost:3000")
config.AllowOrigins = append(config.AllowOrigins, "https://domainB.com")
config.AllowCredentials = true
r.Use(cors.New(config))
后端的处理程序设置 cookie
c.SetSameSite(http.SameSiteNoneMode)
c.SetCookie("nameofCookie", jwtSignedToken, int(time.Now().Add(time.Hour*24).Unix()), "", "", true, false)
其中 secure 为 true,httpOnly 为 false。我在本地工作没有问题,但在不同域的生产中,我的浏览器正确获取 setcookie 标头,它并没有说它根本被阻止,但浏览器没有设置 cookie。任何帮助都会很棒。感谢您的时间。
我已经尝试了所有类型的cors和前端配置。我花了 10 个小时的大部分时间试图解决这个问题,但没有成功。