首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >API不是来自AngularJS,而是在浏览器上工作。

API不是来自AngularJS,而是在浏览器上工作。
EN

Stack Overflow用户
提问于 2015-05-09 20:20:42
回答 1查看 788关注 0票数 0

我使用下面的控制器来获取数据,但是它会出现错误:“请求失败,响应为null,状态代码为0”。但是,从服务器状态是200,在浏览器调试工具中也显示了200状态。这个API运行于火狐和Chrome,但不使用AngularJS。

我使用下面的代码angularjs代码来访问数据。为什么angularJS代码不能从浏览器中提取数据?

代码语言:javascript
复制
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);
  });


});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30144604

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档