2015-08-26 4 views
0

Надеюсь, кто-то может указать мне в правильном направлении, я искал дни, но все равно ничего. Я пытаюсь вызвать другое API просто играть с ответными данными, но каждый раз, когда я называю API я получаю ту же ошибку:Доступ к API общедоступного веб-интерфейса

No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'Your Site' is therefore not allowed access. The response had HTTP status code 404

Я знаю, что мой вызов проходит, потому что для одного конкретного API он отслеживает мое использование и говорит, что я сделал около 5 успешных вызовов, поэтому это означает, что данные возвращаются, но мой браузер блокирует его. Это происходит только в Public API. Я создал свой собственный API через Azure, установил CORS, назвал API, и он работал отлично. Тем не менее, поскольку у меня нет доступа к общедоступным серверам для настройки и включения CORS, у меня нет возможности узнать, как они настроены.

Вот мой код для вызова API:

MyAngularApp.service('APIService', function ($http) { 
    return { 
     getWork: function() { 
      return $.ajax({ 
       url: "http://api.nfldata.apiphany.com/nfl/v2/JSON/Teams/2014", 
       beforeSend: function (xhrObj) { 
        // Request headers 
        xhrObj.setRequestHeader("Ocp-Apim-Subscription-Key", "*******"); 
       }, 
       type: "GET",    
      }) 
     .done(function (data) { 
      alert("success"); 
     }) 
     .fail(function() { 
      alert("error"); 
     }); 
    } 
    } 
}); 

Любая помощь приветствуется Thanks

+0

Да, это проблема CORS, вы можете решить ее, используя JSONP. Просто позвонив API напрямую, вы не получите проблему CORS, потому что вы не называете ее перекрестным доменом, т. Е. Ваш сайт 'x.com' пытается называть' p.com', кросс-сайт ... просто помещая в 'p.com' в браузерах делает его прямым звонком. – ppumkin

+0

@ppumkin Я пробовал jsonp, но я был в замешательстве в обратном аспекте jsonp. Он никогда не запускает функцию обратного вызова, это просто говорит мне неожиданный символ **: **, спасибо, я буду смотреть на него больше – code

+1

Yea JSONP - это немного боль. Используйте 'fiddler', чтобы узнать, какие данные возвращаются в ответ. Я подозреваю, что ваш синтаксис в JS неверен. Может быть, вы забыли приложить ответ в цитатах '' string'', прежде чем разобрать JSON или что-то в этом роде. Это обычная проблема с неожиданными ошибками символов. Или, возможно, вам не нужно анализировать ответ, так как его уже JSON Object и вы можете просто назначить его внутренней переменной. – ppumkin

ответ

0

использованием JSONP способ, но я думаю, что лучше, что вы реализовали политику CORS санкционировать запрос на этот домен, пожалуйста, ознакомьтесь с официальной документацией: Enabling Cross-Origin Requests in ASP.NET Web API 2

+0

Если бы у меня был доступ к их настройкам API, я бы там вообще не заработал CORS для них – code

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