【问题标题】:AngularJS HTTP Get not getting a responseAngularJS HTTP Get没有得到响应
【发布时间】:2016-04-22 03:41:20
【问题描述】:

我无法使用 http.get 从某些网站获取响应。我从 Firebase 所做的每一次获取似乎都有效,但许多其他网站却没有,尽管请求在我的浏览器或 curl 中工作正常。我有两个提供完全相同数据的 URL,一个来自 Firebase,另一个来自 Cloud9 项目。 Firebase 可以工作,而 c9 不行。

当它不起作用时,我得到以下响应:

{"data":null,"status":-1,"config":{"method":"GET","transformRequest":[null],"transformResponse":[null],"url":"http://dl-celeb-dp-x2jroy.c9users.io:8081/getScoreboard","headers":{"Accept":"application/json, text/plain, */*"}},"statusText":""}

我已经尝试过 HTTP 和 HTTPS,但不管用哪种方式,我都得到了相同的响应。

我有一个小提琴要演示: https://jsfiddle.net/9d7mysns/

HTML:

<h1>{{result}}</h1>
<p>{{content}}</p>

</div>

Javascript:

var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope, $http) {
$http.get("https://blazing-torch-1276.firebaseio.com/getScoreboard.json") //Working
//$http.get("https://dl-celeb-dp-x2jroy.c9users.io:8081/getScoreboard") //Not Working
  .then(function(response) {
      $scope.result = "Success";
      $scope.content = response;
  }, function(response) {
      $scope.result = "Error";
      $scope.content = response;
  });
});

请帮忙, 谢谢!

【问题讨论】:

  • 似乎第一个链接启用了 CORS。是否因为另一个没有启用 CORS .. 您需要在第二个链接的服务器端无法使用 CORS
  • 跨域请求 (CORS) - 启用它

标签: javascript angularjs


【解决方案1】:

我认为第二个不允许Cross-Domain request。这就是我在 Chrome 控制台中为您的小提琴看到的内容。

XMLHttpRequest 无法加载 https://dl-celeb-dp-x2jroy.c9users.io:8081/getScoreboard。对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问 Origin 'https://fiddle.jshell.net'。

【讨论】:

  • 我在其他网站上使用 Node-Red。我发现了如何启用 CORS,它现在可以工作了,谢谢!对于我遇到此问题的其他站点,如果我无权在这些服务器上配置 CORS,我认为没有办法解决此问题?
  • 如你所说,你可以使用 CURL。
【解决方案2】:

试试这个:

var app = angular.module('myApp', []);
app.controller('myCtrl',['$scope', '$http', function($scope, $http) {
  //$http.get("https://blazing-torch-1276.firebaseio.com/getScoreboard.json") //Working
  $http.get('https://dl-celeb-dp-x2jroy.c9users.io:8081/getScoreboard',{
     header : {'Content-Type' : 'application/json; charset=UTF-8'}
  }) //Now Working
  .success(function(response) {
    $scope.result = "Success";
    $scope.content = response;
  }).error(function(response) {
    $scope.result = "Error";
    $scope.content = response;
  });
}]);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 2015-01-06
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 2016-05-31
    相关资源
    最近更新 更多