express.js项目中的CORS问题

时间:2019-02-25 07:00:23

标签: node.js reactjs express cors

我正在尝试开发一个MERN项目。我在server.js的{​​{1}}文件中的代码如下。

express.js

我使用const express = require('express'); const bodyParser = require('body-parser'); const addressroute = require('./api/routes/address'); const userroute = require('./api/routes/user'); const mongoose = require('mongoose'); mongoose.set('useCreateIndex', true); mongoose.connect('mongodb://localhost/addresses', { useNewUrlParser: true }); const db = mongoose.connection; var cors = require('cors'); let app = express(); app.use(bodyParser.urlencoded( { extended:true } )); app.use(bodyParser.json()); app.use('/api/address', addressroute); app.use('/api/users', userroute); app.use(cors()); app.options('*', cors()); const PORT = process.env.PORT || 4000; app.listen(PORT); 此命令安装了CORS。

我遇到了错误。

npm install cors --save

enter image description here

6 个答案:

答案 0 :(得分:2)

尝试将cors移到路线上方

const app = express();
const PORT = process.env.PORT || 4000;

app.use(bodyParser.urlencoded( { extended:true } ));
app.use(bodyParser.json());
app.use(cors());
app.use('/api/address', addressroute);
app.use('/api/users', userroute);
app.listen(PORT);

答案 1 :(得分:0)

尝试使用以下代码段:

app.all('/*', function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "X-Requested-With");
  next();
});

答案 2 :(得分:0)

// Try to use the following code   
app.use(function(req, res, next) {
      res.header("Access-Control-Allow-Origin", "*");
      res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
      next();
    });

答案 3 :(得分:0)

在定义路由之前,应移动要执行的CORS中间件(app.use(cors());)。在您在此处添加的代码段中,未在每个请求上调用CORS中间件

答案 4 :(得分:0)

应该在路由之前启用或包含Cors。

<!DOCTYPE html>
<html>
  <head>
    <style id="style"></style>
  </head>
  <body>
    <div>abc</div>
    <p>123</p>
    <script>
      const style = document.querySelector("#style");
      const {sheet} = style;
      sheet.insertRule("div{color:blue}", 0);
      sheet.addRule("p", "color:green", 1);
      console.log(style.textContent);
      style.textContent = "";
      console.assert(style.textContent.length > 0, [style.textContent]); // assertion failed
      console.log(style.textContent === ""); // true
    </script>
  </body>

</html>

答案 5 :(得分:-1)

从前端调用api时添加  '访问控制允许来源':'*' 在请求标头中。