请求的资源上不存在“Access-Control-Allow-Origin”标头。 NodeJS和AngularJS App

时间:2017-01-21 20:18:00

标签: angularjs node.js cors

我已阅读上述所有链接,但仍未解决我的问题。 节点代码

app.all('*', (req, res, next) => {
    let allowedOrigins = ['http://localhost:8080', 'http://127.0.0.1:8080'];
    let origin = req.headers.origin;
    if (allowedOrigins.indexOf(origin) > -1) {
        console.log(origin);
        res.setHeader('Access-Control-Allow-Origin', 'http://127.0.0.1:8080');
    }
    res.set('Access-Control-Allow-Headers', 'X-Requested-With, Content-Type');
    res.set('Access-Control-Allow-Credentials', 'true');
    res.set('Access-Control-Allow-Methods', "GET,POST,PUT,OPTIONS,DELETE");
    next();
});

angularJS

app.config(function($httpProvider) {
    $httpProvider.defaults.withCredentials = true;
    $httpProvider.defaults.useXDomain = true;
});

我实际上正在点击网址,它也会返回200 OK响应,但它仍然会失败并显示此消息。我已经在SO上尝试了很多博客和答案,但似乎没有任何帮助,每个人重申我已经尝试过的同样的事情。 消息失败

XMLHttpRequest cannot load http://localhost:5040/save. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://127.0.0.1:8080' is therefore not allowed access.

2 个答案:

答案 0 :(得分:1)

我只能在这里预测一个问题。

  

您的app.use()必须高于所有请求。

我已经在这类问题上烧过手了所以我知道。如果有帮助,请告诉我。如果没有,我们将重新开始。

答案 1 :(得分:0)

从此处下载名为 Cors 的Chrome插件: https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi?hl=en

它允许您从任何来源请求任何带有ajax的网站。