问题描述
我正在尝试构建我的第一个 MERN 项目,当我尝试通过 React 从后端获取某些内容时,在 Chrome 中遇到了可怕的 CORS 错误。我尝试使用 CORS npm 包,但似乎无法解决问题。这是 Express 应用程序的 index.js。我也试过分别在 2 个路由器中使用 CORS,即使这样也没有用。
如何解决这个问题?提前致谢!
const express = require("express");
const memberRouter = require("./routers/Members");
const noticesRouter = require("./routers/Notices");
const port = process.env.PORT || 5000;
const cors = require('cors');
//Setting up express server
const app = express();
//Accept JSON request body
app.use(express.json());
//CORS call
app.use(cors());
app.listen(port,()=> console.log('Server is up on port ' + port));
//Using the router for Members
app.use(memberRouter);
//Using the router for Notices
app.use(noticesRouter);
解决方法
//Setting up express server
const app = express();
//CORS call
app.use(cors());
//Accept JSON request body
app.use(express.json());
尝试在 express.json()
中间件之前移动 cors 中间件。 Express 中间件按顺序执行,因此添加它们的顺序很重要。 Cors 通常应该是您添加到 Express 服务器的第一个中间件之一,除非您使用 helmet 中间件,我建议您这样做,因为头盔设置了许多可以缓解很多安全问题的标头。建议按照 express's docs 与 express 一起使用。