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

GCP Cloud Run部署前后端后,响应存在Cookie但浏览器未保存的问题求助

GCP Cloud Run部署前后端后,响应存在Cookie但浏览器未保存的问题求助

各位大佬好,我遇到了一个头疼的问题,想请教下大家。我把前后端分别部署在GCP Cloud Run的两个独立服务上,现在登录请求能正常返回200,响应头里也能看到Set-Cookie字段,但浏览器的Application > Storage > Cookies里就是看不到这个Cookie,本地开发和Postman测试都完全正常,只有Cloud Run部署后出问题。


后端(Express.js)相关代码

CORS中间件配置:

app.use(cookieParser())

app.all('*', function (req, res, next) {
  res.header("Access-Control-Allow-Origin", process.env.FRONTEND);
  res.header("Access-Control-Allow-Credentials", true);
  res.header("Access-Control-Allow-Methods", "GET,PUT,POST,DELETE,PATCH,OPTIONS");
  res.header("Access-Control-Allow-Headers", "X-Requested-With");
  res.header("Access-Control-Allow-Headers", "Content-Type, Authorization, x-csrf-token");
  next()
});

设置Cookie的核心代码:

try {
  const oneHourFromNow = new Date(Date.now() + 3600000)
  const Admins = await Admin.find({ password: req.body.password, name: req.body.name }).select("-password").select("-token").select("-_id");
  if (Admins.length > 0) {
    res.cookie("admin-cookie", "123", {
      httpOnly: false,
      secure: true,
      // sameSite: "none",
      expires: oneHourFromNow,
      domain: process.env.DOMAIN,
      path: "/",
    });
    res.status(200).send("Cookie set")
  }
} catch(err) {
  // 省略错误处理逻辑
}

前端(React + Axios)请求代码

const handleSubmit = async (event) => {
  console.log("state", username, password)
  event.preventDefault();
  let data = JSON.stringify({
    "name": username,
    "password": password
  });

  let config = {
    method: 'post',
    maxBodyLength: Infinity,
    url: `${process.env.REACT_APP_BASE_URL}/client/login`,
    headers: {
      'Content-Type': 'application/json',
    },
    data: data,
    credential: 'include'
  };

  axios.defaults.withCredentials = true;
  axios.request(config, { withCredentials: true })
  .then((response) => {
    console.log("cookie response", response)
    if (response.status === 200) {
      console.log("success")
      // window.location.href = "/products";
    }
    console.log(JSON.stringify(response.data));
  })
  .catch((error) => {
    console.log(error);
  });
};

当前现象细节

  • 部署后登录请求返回200,Network面板的请求详情里能看到Set-Cookie头,但Domain字段旁边有个感叹号(暂时找不到官方对这个感叹号的解释)
  • Application面板的Storage > Cookies目录下完全找不到这个Cookie
  • 本地开发环境(前后端分端口跑在localhost)和Postman测试时,Cookie都能正常保存并读取

已经尝试过的排查动作

  • 反复调整CORS政策的各种头配置
  • 在Axios里以多种方式设置withCredentials(全局默认设置、请求单独配置)
  • 加了大量console.log排查请求/响应的细节差异
  • 反复对比本地和部署后的请求头、响应头内容

实在找不到问题所在了,有没有大佬遇到过类似的情况,或者能指点下排查方向?

备注:内容来源于stack exchange,提问作者Tianze Hua

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 11:53:04