前端使用Create React App脚手架,默认以localhost:3000端口启动;
后端使用golang-gin框架,使用8034端口启动。
登录模块走的是sso,前后端分离,后端需要向前端写入认证cookie

c.SetSameSite(http.SameSiteLaxMode)
c.SetCookie("userInfo", userInfoMapString, 60*60*12, "/", cfg.CookieDomain, false, false)
c.SetCookie("access_token", accessToken.(string), 60*60*12, "/", cfg.CookieDomain, false, false)

若种植cookie时设置domain=localhost:3000,实际会发现该cookie被种为domain=localhost

① golang给出日志提示:2023/01/12 19:10:48 net/http: invalid Cookie.Domain “localhost:3000”; dropping domain attribute, 该cookie domain被丢弃:

② 如果该cookie没有domain,该Cookie称之为HostOnly Cookie,后续请求只有host与cookie的domain完全相等,才能携带这个cookie。

react配置后端地址,要配置为localhost:8034,而不能是127.0.0.1:8034

经此一役:

源(Origin)是由 URL 中协议、主机名(域名 domain)以及端口共同组成的部分
本次出现的问题在于两个关键cookie属性 :

  • cookie domain: cookie被种植到哪个域名下?
  • cookie samesite: 请求哪些资源domain时能携带该cookie?

来源:
作者:博客猿马甲哥
链接:https://www.cnblogs.com/JulianHuang/p/17050485.html