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

Vercel公开域名NextAuth会话验证异常致通知页跳转问题

问题原因及解决方案

核心问题分析

日志里的[next-auth][error][CLIENT_FETCH_ERROR]错误提示解析JSON时遇到<,说明/api/auth/session接口返回的是HTML内容而非预期的JSON,状态码200是因为确实返回了页面内容(比如首页),而非会话数据。这直接导致getServerSideProps里的session始终为null,触发跳转逻辑。

仅Vercel公开域名出现问题,大概率是该域名的环境配置、重定向规则或缓存策略和其他测试域名不一致导致的。

可能的原因及对应排查/解决步骤

1. NEXTAUTH_URL环境变量配置错误

NextAuth依赖NEXTAUTH_URL来生成正确的API请求地址。如果这个变量没有设置为公开域名,会导致会话请求发送到错误的地址(比如测试域名或本地地址),最终被重定向到首页HTML。

  • 进入Vercel项目的Settings > Environment Variables,检查NEXTAUTH_URL是否设置为公开域名(比如https://your-public-domain.vercel.app)
  • 确保该变量在Production环境下生效,且没有被其他环境的变量覆盖

2. Vercel重定向/路由规则冲突

公开域名可能配置了全局重定向规则(比如强制HTTPS、域名跳转),导致/api/auth/session请求被错误重定向到首页。

  • 进入Vercel项目的Settings > Redirects,检查是否存在匹配/api/*路径的重定向规则,若有则修改或删除
  • 检查next.config.js里的redirects或rewrites配置,确保没有对/api/auth/*路径进行不当处理

3. Vercel CDN缓存策略异常

公开域名的CDN可能错误缓存了/api/auth/session的响应,把原本应该动态返回的JSON缓存成了静态HTML页面。

  • 进入Vercel项目的Settings > Edge Network,检查缓存规则,确保/api/auth/*路径被排除在缓存之外
  • 手动清除Vercel缓存:在项目部署页面点击Clear Cache and Redeploy

4. 自定义域名的DNS/代理配置问题

如果公开域名是自定义域名,可能存在DNS指向错误或第三方代理(如Cloudflare)的规则干扰:

  • 检查自定义域名的DNS记录,确保CNAME正确指向cname.vercel-dns.com
  • 若使用Cloudflare等代理,检查是否有规则修改了/api/auth/*路径的响应,暂时关闭代理测试是否恢复正常

额外排查建议

  • 在公开域名下,直接访问https://your-public-domain.vercel.app/api/auth/session,查看返回内容:如果是HTML页面(比如首页),则验证了上述分析;如果是JSON(未登录时返回{},登录时返回会话数据),则需要进一步检查getServerSideProps的执行逻辑
  • 在Vercel的函数日志里查看/api/auth/session的具体请求和响应,确认返回的内容类型是否为application/json

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 17:27:50