我使用下面的控制器来获取数据,但是它会出现错误:“请求失败,响应为null,状态代码为0”。但是,从服务器状态是200,在浏览器调试工具中也显示了200状态。这个API运行于火狐和Chrome,但不使用AngularJS。
我使用下面的代码angularjs代码来访问数据。为什么angularJS代码不能从浏览器中提取数据?
module.controller('bipartiteAPICtrl', function($scope,$http) {
$scope.data = null;
$http.get('http://v1.seventh-league-763.appspot.com/getbipartitejs?regionfile=lincRNATSS_200bp_segmented.bed+&celltype1=E050_15_coreMarks_mnemonics.bed+&celltype2=E048_15_coreMarks_mnemonics.bed')
.success(function(response) {
alert("webservice completed");
console.log("Your name is: " + response.data);
})
.error(function(response, status) {
console.log("The request failed with response " + response + " and status code " + status);
});
});发布于 2015-05-10 01:00:56
当角返回代码0时,很可能是CORS错误。我是否正确地假设您的角码运行在与v1.7-League-763.apppot.com不同的域上?
一般不允许一个域上的网站访问另一个域上的服务器。要做到这一点,您需要使用CORS (跨源资源共享)。通常,CORS意味着让服务器使用Access-Control-Allow-Origin=client-domain头进行响应。否则浏览器将被阻塞,角将返回状态代码0。
如果您将它粘贴到浏览器中,并尝试以这种方式获得它,那么它工作的原因是您不再试图跨域访问它。所以CORS不是问题。
请注意,有些人可能建议使用JSONP而不是CORS,因为JSONP也可以跨域工作,但这不是一个好的解决方案!它需要与CORS相同的服务器工作量(如果不是更多的话),但是JSONP有很多安全问题。CORS是跨域资源的新标准和当前推荐标准,因此,如果可能,请避免使用JSONP。
https://stackoverflow.com/questions/30144604
复制相似问题