2016-04-21 3 views
2

У меня возникли проблемы с получением ответов с определенных сайтов с помощью http.get. Кажется, что я получаю от Firebase, но многие другие сайты этого не делают, хотя запросы работают отлично от моего браузера или завитки. У меня есть два URL-адреса, которые содержат точные данные, один из Firebase и другой из проекта Cloud9. Firebase работает, а c9 - нет.AngularJS HTTP Не получать ответ

Когда он не работает, я получаю следующий ответ:

{"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; 
    }); 
}); 

Пожалуйста, помогите, Спасибо!

+1

кажется, первая ссылка включена с CORS. так как другой не разрешил CORS .. вам не удалось CORS на стороне сервера 2-й ссылки –

+0

Запросы на перекрестный поиск (CORS) - Включить его –

ответ

5

Я думаю, что второй не позволяет Cross-Domain request. Это то, что я вижу в консоли Chrome для вашей скрипки.

XMLHttpRequest не может загрузить https://dl-celeb-dp-x2jroy.c9users.io:8081/getScoreboard. Ответ на запрос перед полетом не проходит проверку контроля доступа. Нет заголовка «Access-Control-Allow-Origin» на запрошенном ресурсе. Происхождение 'https://fiddle.jshell.net', следовательно, не допускается.

+1

Я использовал Node-Red на моем другом сайте. Я узнал, как включить CORS, и теперь он работает, спасибо! Для других сайтов, где у меня возникла эта проблема, я полагаю, что этого не происходит, если у меня нет доступа к настройке CORS на этих серверах? – Jeremy

+0

Вы можете использовать CURL, как вы сказали. –

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; 
    }); 
}]);