express.js项目中的CORS问题

问题描述 投票:0回答:6

我正在努力开发一个MERN项目。我在server.jsexpress.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);

我使用npm install cors --save这个命令安装了CORS。

我收到了以下错误。

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:4000/api/users/register. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).[Learn More]
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:4000/api/users/register. (Reason: CORS request did not succeed).

enter image description here

node.js reactjs express cors
6个回答
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);

0
投票

尝试使用以下代码段:

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

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();
    });

0
投票

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


0
投票

应该在您的路线之前启用或包括Cors。

const express = require('express');
const cors = require('cors');
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;



let app = express();
app.use(bodyParser.urlencoded( { extended:true } ));
app.use(bodyParser.json());

app.use(cors());

app.use('/api/address', addressroute);
app.use('/api/users', userroute);
const PORT = process.env.PORT || 4000;
app.listen(PORT);

-1
投票

从前端调用你的api时,在请求的标题中添加'Access-Control-Allow-Origin':'*'。

© www.soinside.com 2019 - 2024. All rights reserved.