You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

Vercel部署后Session/Header检测失败问题排查求助

可能的错误点及排查方向

Cookie验证失败的常见原因

  • Cookie属性配置不匹配生产环境
    本地开发时localhost是HTTP环境,Cookie无需设置secure: true,但Vercel部署后是HTTPS强制环境,必须开启secure属性;同时sameSite属性需设置为'strict''lax'(不能用'none'除非跨域场景),否则浏览器会拒绝保存Cookie。另外,Firebase Auth的Session Cookie域名需配置为Vercel生产域名(比如xxx.vercel.app),而非本地localhost,可在Firebase控制台的「认证」→「会话管理」中调整。

  • Firebase Admin SDK验证逻辑漏洞
    api/session/route.ts中生成Session Cookie时,需确保正确验证客户端发送的ID Token:

    • 未校验ID Token的aud(受众)是否匹配项目ID,导致无效Token被转换为Cookie
    • 未处理Firebase Admin的验证错误(比如Token过期、签名无效),直接生成Cookie
    • Cookie的maxAge设置与Firebase ID Token的过期时间不匹配,导致Cookie提前失效
  • Next.js Middleware的Cookie读取逻辑问题
    Vercel上的Middleware运行在边缘函数环境,读取Cookie时需注意:

    • 未使用Next.js官方的cookies()工具读取,而是直接操作request.headers,导致编码或格式错误
    • 未处理Cookie不存在的边界情况,直接尝试验证,抛出未捕获错误中断请求

API路由无法绕过Vercel防火墙的原因

  • 请求头传递被拦截
    浏览器中可见Cookie/Header,但Vercel边缘网络可能过滤了自定义头或认证头:

    • 客户端发送ID Token时使用了非标准头(比如X-ID-Token),被Vercel WAF规则拦截,建议改用标准的Authorization: Bearer <token>
    • Next.js的next.config.js未配置跨域选项,导致跨域请求时浏览器未携带Cookie,需添加:
      module.exports = {
        async headers() {
          return [
            {
              source: '/api/:path*',
              headers: [
                { key: 'Access-Control-Allow-Credentials', value: 'true' },
                { key: 'Access-Control-Allow-Origin', value: process.env.NEXT_PUBLIC_VERCEL_URL },
              ],
            },
          ];
        },
      };
      
  • Vercel防火墙规则误拦截
    检查Vercel控制台「Security」→「Firewall」中的规则:

    • 开启了「Bot Protection」或「Rate Limiting」,误将合法认证请求判定为机器人
    • 自定义WAF规则中包含了拦截认证Cookie/Token的规则,需调整规则或添加放行条件
  • API路由缓存导致请求头丢失
    Vercel默认会缓存静态API路由,若api/session/route.ts未显式禁用缓存,会导致请求头无法正确传递,需添加:

    export const dynamic = 'force-dynamic';
    

环境变量与配置遗漏

  • 未在Vercel控制台配置Firebase Admin的服务账号密钥(FIREBASE_SERVICE_ACCOUNT),导致生产环境无法初始化Admin SDK,无法验证Token或生成Cookie
  • NEXT_PUBLIC_VERCEL_URL等环境变量未正确设置,导致Cookie域名、CORS origin配置错误

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

火山引擎 最新活动