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

NextJS回调中在Vercel上无法正常获取Cookies的问题求助

在Vercel部署的Next.js项目中回调函数无法获取自定义Cookie的解决方案
  • 检查SameSite与Secure配置匹配
    生产环境设置sameSite: "none"时,必须同时开启secure: true——这是浏览器的强制要求,只有HTTPS请求才会携带这类Cookie。Vercel默认提供HTTPS,但如果使用自定义域名未配置SSL,会导致Cookie无法被发送。

  • 补充Cookie的域名配置
    本地localhost环境下无需指定domain,但部署到Vercel后,默认域名是xxx.vercel.app或自定义域名,若Cookie未绑定对应域名,回调请求时浏览器不会携带它。可以添加domain参数:

    context.cookies().set("session", state, {
      httpOnly: true,
      secure: env.NODE_ENV === "production",
      path: "/",
      maxAge: 10 * 24 * 60 * 60, 
      sameSite: env.NODE_ENV === "production" ? "none" : "lax",
      domain: env.NODE_ENV === "production" ? ".vercel.app" : undefined, // 自定义域名可改为".yourdomain.com"
    });
    

    注意:使用带.前缀的域名可以适配子域名,避免域名不匹配问题。

  • 验证回调请求的Cookie携带状态
    打开浏览器开发者工具的「网络」面板,查看回调请求的Request Headers,确认Cookie字段是否包含session。如果没有,说明是浏览器未发送(配置问题);如果有但后端获取不到,再检查Next.js的context使用逻辑。

  • 确认函数运行时配置
    确保回调函数的runtime确实设置为nodejs,Edge Runtime的Cookie处理逻辑与Node.js Runtime不同,可能导致无法获取自定义Cookie。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 08:30:01