我正在使用Request发布一些数据。在我的控制器中,我有以下代码:
$http.post('http://requestb.in/redacted', fooBar).
success(function(data) {
$scope.fooBarPostedSuccess = true;
}).
error(function(err) {
console.log("Error while posting to Request Bin");
console.log("Error Info : " + err);
});
这是通过在UI上的按钮上触发的。现在,当这被触发时,数据不会被发送到Request,而我得到了以下错误:
XMLHttpRequest cannot load http://requestb.in/redacted.
Origin http://localhost:3000 is not allowed by Access-Control-Allow-Origin.
如何通过AngularJS控制器发布数据以请求bin?另外,上面的错误意味着什么?
编辑:我想在这里添加,我使用的是Node.js和AngularJS。这可能和Node有关吗?
发布于 2013-04-15 11:57:05
啊是的..。您正在处理跨域脚本问题。这不是AngularJS问题,而是浏览器安全限制和非常常见的摩擦点。
如果不进行跨源资源共享(CORS),您就不能将/PUT/DELETE发送到另一个域(与在您的情况下托管-- localhost不同)。您只能获得跨域HTTP请求。
你有两个选择:
希望这能有所帮助!
编辑:
您的API支持JSONP (您的API文档)。您应该能够使用API的JSONP函数来访问API的JSONP功能。(Angular.js JSONP文档)。
因为您希望能够发布到服务,所以需要使用第二种方法。
发布于 2013-05-15 21:25:03
CORS允许GET和POST
现在,这件事已经过时了.我也发现角的$http不允许我发布跨域。不过,我对此表示怀疑,因为在其他可以跨域发布的项目中有jquery调用。所以,我把我的$http帖子换成了$.ajax帖子,这就奏效了。
// $http({
// url: url,
// method: "POST",
// data: data
// })
// .success(successCallback)
// .error(errorCallback)
// ole reliable
$.ajax({
type : "POST",
url : url,
data : data,
success : successCallback,
error : errorCallback,
cache : false,
dataType : 'json',
})
https://stackoverflow.com/questions/16013858
复制相似问题