Заблокирован запрос перекрестного происхождения: политика того же источника запрещает чтение удаленного ресурса по адресу https: // 2020 node js

#node.js #angular #express #server #cloud9-ide

#node.js #angular #экспресс #сервер #cloud9-ide

Вопрос:

В связи с этой проблемой задается так много вопросов, но ни один из них не решает мою проблему. Я использую cloud9 IDE для своей разработки. Я пытаюсь получить данные с сервера узла в проект angular с помощью API. Мой node.js сервер имеет весь необходимый заголовок CORS. Но я продолжаю получать сообщение об ошибке. Вот мой серверный код:

 var express = require('express'),
  app = express(),
  port = 8080,
  bodyParser = require('body-parser');
const cors = require('cors');
app.use(cors());  


const { expressCspHeader, INLINE, NONE, SELF } = require('express-csp-header');
 

app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
 
app.use(expressCspHeader({
    policies: {
        'default-src': [expressCspHeader.NONE],
        'img-src': [expressCspHeader.SELF],
    }
})); 
    
app.use(cors());   
app.use(function(req, res, next) {
   res.header("Access-Control-Allow-Origin", "*");
   res.header('Access-Control-Allow-Methods', 'GET');
   res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
   if ('OPTIONS' == req.method) {
      res.sendStatus(200);
    }
    else {
      next();
    }});



var routes = require('./api/routes/doRoutes'); //importing route
routes(app);
app.use(function(req, res) {
  res.status(404).send({url: req.originalUrl   ' not found'});
});
app.listen(port);

console.log('RESTful API server started on: '   port);

  

Вот ошибка в браузере firefox:

введите описание изображения здесь

Проблема в IDE? Или я что-то упускаю? Пожалуйста, помогите!

Комментарии:

1. Хорошо! Думаю, я нашел проблему. Проблема была с IDE, я запустил сервер с локального хоста, и все начало работать. Хотя я хотел бы знать, почему это происходит с cloud9

Ответ №1:

Я думаю, это потому, что у вас включен только глагол get в вашем бэкэнде

Измените это:

 res.header('Access-Control-Allow-Methods', 'GET');
  

для этого:

 res.header('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, DELETE');
  

Комментарии:

1. Спасибо за комментарий. Я попробовал это, он выдает ту же ошибку.

2. хорошо, затем добавьте заголовок «Access-Control-Allow-Origin» к запросу во внешнем интерфейсе

3. заголовок запроса не работает, он выдает ошибку как «req.header не является функцией»