Проблема с CORS в проекте express.js - PullRequest
0 голосов
/ 25 февраля 2019

Я пытаюсь разработать проект MERN.Мой код в server.js файле 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 эту команду.

Я получаю ошибку ниже.

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

Ответы [ 6 ]

0 голосов
/ 25 февраля 2019

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);
0 голосов
/ 25 февраля 2019

Вы должны переместить промежуточное программное обеспечение CORS (app.use(cors());), чтобы оно выполнялось до того, как вы определите свои маршруты.В фрагменте, который вы добавили здесь, промежуточное программное обеспечение CORS не вызывается при каждом запросе

0 голосов
/ 25 февраля 2019

Попробуйте переместиться 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 голосов
/ 25 февраля 2019
// 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 голосов
/ 25 февраля 2019

при вызове вашего API из внешнего интерфейса добавьте 'Access-Control-Allow-Origin': '*' в заголовки запроса.

0 голосов
/ 25 февраля 2019

Попробуйте использовать следующий фрагмент кода:

app.all('/*', function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "X-Requested-With");
  next();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...