2014-10-30 2 views
0

У меня есть контроллер с сервисом, который бы получить JSON с другого сервера, и я пришел к этому

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http:somesite.com. This can be fixed by moving the resource to the same domain or enabling CORS.позволяя CORS от контроллера углового JS

Я заметил, что некоторые из того же вопроса будет закрепляться на "Access-Control-Allow-Origin": "*" в заголовке my в моем случае я не вижу никакого прогресса в его исправлении.

этот код для моего контроллера:

var myApp = angular.module('cplanner',[]); 

myApp.controller('GetItemCtrl', ['$scope', '$http', function($scope, $http) { 

    var itemUrl = 'http:somesite.com'; 

    //console.log(itemUrl); 
    $http({url: itemUrl, 
    dataType: 'json', 
    method: 'POST', 
    dataType : 'json', 
    headers: { 
     "Access-Control-Allow-Origin": "*", 
     "Access-Control-Allow-Methods": "POST, GET, OPTIONS, PATCH, DELETE", 
     "Access-Control-Allow-Headers": "Origin, X-Requested-With, Content-Type, Accept" 
    }, 
    xhrFields: { 
     withCredentials: true 
    }}).success(function(data, status, headers, config) { 
     //check if the response has ok status 
     if(data.status == "ok"){ 
     console.log(data.data); 
      $scope.items = data.data; 
     } 


     }).error(function(data, status, headers, config) { 


    }); 

}]); 

я добавил заголовок, но это, похоже, не исправить мой перекрестный вопрос происхождения. Может ли кто-нибудь привести меня к каким-либо комментариям и предложениям о том, как я могу получить ответ от другого источника сервера. благодарим вас заранее.

ответ

0

CORS - это то, что должно быть включено на сервере . Если у вас нет доступа к этому серверу, вы, вероятно, не сможете делать то, что надеялись. Если у вас есть доступ вам нужно прочитать о том, как включить его для любого языка API-интерфейс был написано в :)

Смотрите здесь для получения дополнительной информации: CORS request is not allowed with AngularJS

+0

Я вижу, но я не имею доступа к моему серверу, можно сделать это в Htaccess? – CaffeineShots

+0

См. Http://enable-cors.org/server_apache.html – Tomer

+0

@caffeineshots Вы можете использовать JSONP или что-то еще? Вы имеете в виду htaccess на вашем веб-сервере или сервере api? – John

2

CORS является серверным решением - это - первый запрос, который веб-клиент (JS) отправляет в другой домен (следовательно, кросс-домен), является запросом OPTIONS, который отвечает сервером происхождения с погодой или не соблюдает запросы на междоменные запросы, если он отвечает:

"Access-Control-Allow-Origin": "*", 
    "Access-Control-Allow-Methods": "POST, GET, OPTIONS, PATCH, DELETE", 
    "Access-Control-Allow-Headers": "Origin, X-Requested-With, Content-Type, Accept" 

Затем браузер отправляет другой запрос - фактический запрос, который должен был быть отправлен. Весь этот механизм происходит автоматически. Все, что вам нужно сделать, это включить CORS на вашем сервере. Чтобы включить CORS, вот некоторые полезные ссылки:
ASP.NET WEBAPI
APACHE

Смежные вопросы