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

Next.js API CORS跨域问题求助:配置自定义头后仍无法跨域请求

Next.js API跨域请求失败排查方案

可能的原因及解决办法

  • 未处理OPTIONS预请求
    浏览器发起非简单跨域请求(比如POST带JSON数据)时,会先发送OPTIONS预请求验证权限。你的next.config.js配置虽然设置了允许的方法,但如果API路由本身没有处理OPTIONS请求,可能导致预请求失败。

    可以在API路由文件里直接处理OPTIONS方法,或者用Next.js的中间件统一处理:

    // 示例:在/api/subscribe.js中添加
    export default function handler(req, res) {
      if (req.method === 'OPTIONS') {
        res.status(200).end();
        return;
      }
      // 后续处理POST等其他请求逻辑
    }
    
  • 缺少必要的响应头
    如果你的请求带了自定义请求头或者Content-Type为application/json,需要在CORS配置中补充Access-Control-Allow-Headers:

    // 修改next.config.js的headers配置
    module.exports = {
      async headers() {
        return [
          {
            source: "/api/(.*)",
            headers: [
              { key: "Access-Control-Allow-Origin", value: "*" },
              { key: "Access-Control-Allow-Methods", value: "GET,DELETE,POST,PUT,OPTIONS" },
              { key: "Access-Control-Allow-Headers", value: "Content-Type, Authorization" } // 根据实际请求头调整
            ]
          }
        ];
      }
    };
    
  • 浏览器缓存旧响应
    浏览器可能缓存了之前的CORS响应头,尝试清除浏览器缓存,或者用Ctrl+Shift+R强制刷新页面后再测试。

  • 部署平台的额外配置冲突
    如果是在Vercel、Netlify等平台部署,平台可能有独立的CORS设置,可能会覆盖next.config.js的配置。需要检查平台的项目设置,确保没有冲突的CORS规则。

  • next.config.js配置未生效
    确认修改next.config.js后重启了开发服务器,生产环境重新部署了应用。有时候配置修改后需要重新构建才能生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 12:33:19