Angularjs发布请求错误否'Access-Control-Allow-Origin'

时间:2014-10-12 17:38:01

标签: javascript node.js angularjs express

我已将index请求发送到localhost:3000/SetUser,但我始终收到错误XMLHttpRequest cannot load https://localhost:3000/SetUser. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://localhost' is therefore not allowed access.

这是我的Angular控制器中的代码

$http.post("https://localhost:3000/SetUser", {'a':'b'}).success(function(data, status, headers, config) {
 console.log('data', data);
});

这是我的server.js(nodejs)app.post

上的代码
app.post('/SetUser', function(req, res) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "X-Requested-With");
    res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE'); 
    res.end();
    console.log("New user added ", req.body);
});

我尝试了一切,不知道可以做些什么来解决这个问题。 谢谢!

2 个答案:

答案 0 :(得分:2)

确保所有内容都在同一个端口上运行,它应该解决问题, 并且通过他的错误,他可以理解他将端口80的请求发送到端口3000。 什么阻止你在同一个端口上解析你的应用程序?

你应该更好地解释自己。

答案 1 :(得分:1)

深入了解网络标签,浏览器发送"预检"请求,这是一个OPTIONS请求:https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS#Preflighted_requests

所以你必须为这个动词设置你的CORS标题!

我建议全局设置:

app.use(function(req, res, next) {
    res.header('Access-Control-Allow-Origin', 'example.com');
    res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
    res.header('Access-Control-Allow-Headers', 'Content-Type,X-Requested-With');
    next();
});

另外请注意你的allow-headers并完成它们

相关问题