Node.js 跨源请求被阻止:同源策略不允许读取https://2020节点js上的远程资源

Node.js 跨源请求被阻止:同源策略不允许读取https://2020节点js上的远程资源,node.js,angular,express,server,cloud9-ide,Node.js,Angular,Express,Server,Cloud9 Ide,有这么多的问题问了这个问题,但没有解决我的问题。 我正在使用Cloud9IDE进行开发。我正在尝试使用API从节点服务器接收数据到angular项目。My node.js服务器具有所需的所有CORS头。但我继续收到错误。 这是我的服务器代码: var express = require('express'), app = express(), port = 8080, bodyParser = require('body-parser'); const cors = require(

有这么多的问题问了这个问题,但没有解决我的问题。 我正在使用Cloud9IDE进行开发。我正在尝试使用API从节点服务器接收数据到angular项目。My 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导致了问题吗?还是我错过了什么?请帮忙

我认为这是因为您的后端只启用了get动词

更改此项:

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

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

好吧我想我找到了问题所在。问题在于IDE,我从localhost运行服务器,一切都开始工作。虽然我想知道为什么会发生在Cloud9上谢谢你的评论。我试过了,它给出了相同的错误。好的,然后在前端的请求中添加标题“Access Control Allow Origin”