我无法使用http.get从某些网站获取回复。我从Firebase获得的每一项工作似乎都有效,但许多其他网站却没有,尽管我的浏览器或卷曲请求工作正常。我有两个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;
});
});
请帮忙, 谢谢!
答案 0 :(得分:5)
我认为第二个不允许Cross-Domain request。这就是我在Chrome控制台中看到的小提琴。
XMLHttpRequest无法加载https://dl-celeb-dp-x2jroy.c9users.io:8081/getScoreboard。对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许原点“https://fiddle.jshell.net”访问。
答案 1 :(得分:0)
试试这个:
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;
});
}]);