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

NodeJS集成Google登录对接Firebase Functions出现会话Cookie解码失败问题

问题根因

Firebase Hosting CDN 存在 cookie 透传限制:默认只允许名称为 __session 的 cookie 被传递到后端 Cloud Functions,其余自定义命名的 cookie 会被 CDN 直接丢弃。
你当前代码中创建的鉴权 cookie 名称为 session,不符合 Firebase Hosting 的规则,因此用户跳转后的请求不会携带该 cookie,导致后端拿到的 cookies 为空,触发鉴权失败。

修复步骤

  1. 修改 session cookie 命名
    在 /sessionLogin 接口的 cookie 设置逻辑中,将 cookie 名称从 session 改为 __session,同时手动指定 path 为 / 保证全站可访问:
const options = {maxAge: expiresIn, httpOnly: true, secure: true, path: '/'};
res.cookie('__session', sessionCookie, options);
  1. 同步修改鉴权中间件的 cookie 读取逻辑
    在 authenticate 中间件中,调整读取 cookie 的键名:
const sessionCookie = req.cookies.__session || '';
  1. 处理命名冲突(可选)
    你当前 express-session 配置的 cookie 名称也为 __session,二者会发生冲突。建议调整方案:
  • 如果不需要保留 express-session,直接移除相关配置即可
  • 如果需要保留 express-session,建议将 session 数据存储到 Firebase 数据库中,以用户 UID 作为索引,取消 express-session 的客户端 cookie 存储逻辑

验证方法

部署修改后的代码后,打开浏览器开发者工具:

  1. 登录完成后在「应用 - Cookie」面板确认存在 __session cookie,域名为你的站点域名、path 为 /
  2. 跳转 /user/dashboard 时在「网络」面板确认请求头中携带了 Cookie: __session=xxx 字段

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 04:39:01