You need to enable JavaScript to run this app. MERN项目部署后CORS报错:access-token请求头不被预检响应允许如何解决
优惠活动
大模型
产品
解决方案
定价
更多

MERN项目部署后CORS报错:access-token请求头不被预检响应允许如何解决

问题根因

报错明确提示请求头access-token未被后端CORS配置的Access-Control-Allow-Headers字段允许,你当前的CORS配置里只列了Origin、X-Requested-With、Content-Type、Accept、Authorization,缺少自定义头access-token,且未对OPTIONS预检请求做特殊处理,所以配置不生效。

修复方案

方案1:直接修改你现有的自定义CORS中间件

调整代码如下:

// cors middleware
app.use(function (req, res, next) {
  // 如果前端请求带身份凭证,这里不要写*,替换为你的前端域名:https://angry-hamilton-41dfa7.netlify.app
  res.header("Access-Control-Allow-Origin", "*"); 
  // 新增access-token到允许的请求头列表
  res.header(
    "Access-Control-Allow-Headers",
    "Origin, X-Requested-With, Content-Type, Accept, Authorization, access-token",
  );
  res.header(
    "Access-Control-Allow-Methods",
    "GET, POST, OPTIONS, PUT, PATCH, DELETE",
  );
  // 处理OPTIONS预检请求,直接返回200
  if (req.method === 'OPTIONS') {
    return res.sendStatus(200);
  }
  next();
});

方案2:使用官方cors包(更稳定,避免手写配置出错)

  1. 安装依赖:
npm install cors
  1. 在server.js中引入配置:
const cors = require('cors');
// 配置CORS
app.use(cors({
  // 允许的前端域名,生产环境不要用*
  origin: "https://angry-hamilton-41dfa7.netlify.app",
  // 允许的请求头,包含你自定义的access-token
  allowedHeaders: ["Origin", "X-Requested-With", "Content-Type", "Accept", "Authorization", "access-token"],
  // 允许的请求方法
  methods: ["GET", "POST", "OPTIONS", "PUT", "PATCH", "DELETE"]
}));

验证步骤

修改代码后重新部署到Heroku,清除浏览器缓存后再次发起请求即可恢复正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 03:06:03