На запрошенном ресурсе в NodeJS отсутствует заголовок «Access-Control-Allow-Origin» - PullRequest
0 голосов
/ 16 октября 2018

Я использую приложение NodeJS, работающее на,

http://localhost:3000

У меня есть еще один API-интерфейс NodeJS, работающий на http://localhost:3002.

Я получаю следующую ошибку при вызовеAPI в приложении.

Failed to load http://localhost:3002: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access.

Я добавил CORS в server.js файл http://localhost:3002

var cors = require('cors');

app.options('*', cors()); 

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

// define a simple route
app.get('/', (req, res) => {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); 
    res.json({"message": "Welcome to Application"});
});

app.listen(3002, () => {
    console.log("Server is listening on port 3002");
});

Я все еще получаю сообщение об ошибке.Всякий раз, когда я открываю URL http://localhost:3000, я вижу ошибку в консоли разработчика Chrome.

Ответы [ 2 ]

0 голосов
/ 16 октября 2018

ну сначала попробуйте

npm install cors
app.use(cors())

, если это не сработает, попробуйте это

allowCrossDomain = function(req, res, next) {
  res.header('Access-Control-Allow-Credentials', true);
  res.header('Access-Control-Allow-Origin', req.headers.origin);
  res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
  res.header('Access-Control-Allow-Headers', 'X-Requested-With, X-HTTP-Method-Override, Content-Type, Accept');
  if ('OPTIONS' === req.method) {
    res.sendStatus(200);
  } else {
    next();
  }
};

app.use(allowCrossDomain);
0 голосов
/ 16 октября 2018

Вы должны использовать cors, как это

app.use(cors()); 

Ссылка

Простое использование (включить все запросы CORS)

var express = require('express')
var cors = require('cors')
var app = express()

app.use(cors())

app.get('/products/:id', function (req, res, next) {
  res.json({msg: 'This is CORS-enabled for all origins!'})
})

app.listen(80, function () {
  console.log('CORS-enabled web server listening on port 80')
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...