You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Go语言服务端如何设置Cookie及客户端不生成Cookie问题排查

问题原因及修复方案

  • 核心是当前Cookie缺少必要的安全属性配置,以及可能存在跨域请求的配套配置缺失,按以下步骤调整即可:
  1. 补全Cookie必要属性
    你当前只配置了Name和Value,浏览器安全策略会拦截不符合要求的Cookie,修正后的代码如下:
func userLogin(w http.ResponseWriter, r *http.Request) {
        cookie := &http.Cookie{
            Name:     "my-cookie",
            Value:    "some value",
            Path:     "/", // 保证全站路径可访问
            Domain:   "你前端页面的域名,本地测试可填localhost",
            MaxAge:   3600, // 有效期1小时,不设置默认是会话Cookie,关闭浏览器即清除
            Secure:   true, // 跨域场景下必须开启,HTTPS环境强制开启
            HttpOnly: true, // 可选,禁止JS读取Cookie,防范XSS攻击
            SameSite: http.SameSiteNoneMode, // 跨域场景用该值,同站部署可改为http.SameSiteLaxMode
        }
        http.SetCookie(w, cookie)
        w.WriteHeader(200)
        // 修复原代码字符串未闭合的语法错误
        w.Write([]byte("cookie is set"))
        return
}
  1. 跨域场景配套配置
    如果你的前后端部署域名/端口不一致属于跨域场景,还要补充两个配置:
  • 前端请求配置:axios需要开启withCredentials: true,fetch需要开启credentials: 'include',否则浏览器默认不会处理跨域响应的Set-Cookie头
  • 后端CORS配置:Access-Control-Allow-Credentials响应头设为true,Access-Control-Allow-Origin不能用通配符*,必须显式指定前端的完整域名
  1. 排查技巧
    如果调整后仍不生效,可以打开浏览器控制台的Console标签,浏览器会输出明确的Cookie拦截原因,比如SameSite属性不合法、跨域未配置凭证等,也可以在Application -> Cookie列表中查看是否有被标红的拦截记录。

内容的提问来源于stack exchange,提问作者Jesver

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 17:45:03