2014-10-03 3 views
1

Я пытаюсь создать приложение angularjs в качестве плагина cbssports.AngularJS доступ к Cbssports REST API

Они предоставляют API RESTful.

Ниже мой $ запрос HTTP:

$http.get(basePath + 'league/owners?access_token=' + cbssportsTokens['access_token'] + '&response_format=JSON') 
     .success(function(data) { 
      return data; 
     }); 

Это завернута на заводе и используется в контроллере. Насколько я могу судить, это выполняется правильно. Когда я смотрю на инструменты разработчика Chrome можно увидеть следующее сообщение об ошибке по моей просьбе из консоли:

OPTIONS http://api.cbssports.com/fantasy/league/owners?access_token=U2FsdGVkX18Hyd0…J9DrpO7C-OXQQNXGMh0ej0iXVfPf5DkQwkLwSpCqGhipd6HogV_gZ&response_format=JSON angular.js:8560 
(anonymous function) angular.js:8560 
sendReq angular.js:8354 
$http.serverRequest angular.js:8087 
wrappedCallback angular.js:11572 
wrappedCallback angular.js:11572 
(anonymous function) angular.js:11658 
Scope.$eval angular.js:12701 
Scope.$digest angular.js:12513 
Scope.$apply angular.js:12805 
done angular.js:8378 
completeRequest angular.js:8592 
xhr.onreadystatechange 
XMLHttpRequest cannot load http://api.cbssports.com/fantasy/league/owners?access_token=U2FsdGVkX18xBod…oQWvjDVSbpZCOVsoIKeVXKRSYdo6dBbIE0rgMWTkWhmgPUTyr_xnS&response_format=JSON. The 'Access-Control-Allow-Origin' header has a value 'https://www.cbssports.com' that is not equal to the supplied origin. Origin 'http://xx.xx.xx.xx:9001' is therefore not allowed access. ?access_token=U2FsdGVkX18xBodWEOfeqys5X4aDpghYrE22FGljlJd_TtKRHlWh4LHWFwVxay95BbAWvn4te1foQWvjDVSbp…:1 

Когда я нажимаю на ссылку, он сказал, что не может загрузить, он берет меня на новую страницу с ожидаемый выход !! Таким образом, CORS не должен быть проблемой с сервера.

Я прочитал много разных вопросов с CORS об изменении заголовков. Последующий как я поставил его:

$httpProvider.defaults.headers.common['Access-Control-Allow-Origin'] = '*'; 
    $httpProvider.defaults.headers.common['Access-Control-Allow-Headers'] = 'Origin'; 

Любые советы будут оценены, также мой первый пост на SO, поэтому, пожалуйста, дайте мне знать, если больше информации поможет.

+0

Все, что я использую, это '$ httpProvider.defaults.useXDomain = true;' и 'delete $ httpProvider.defaults.headers.common ['X-Requested-With'];' Использовать CORS. Хотя, я использую $ resource. – Owen

+0

Я также пробовал это, это приводит к тому же. – rbuckley

ответ

0

Так что я не совсем понял, как это работает. Но я нашел своеобразное решение.

function _get(url) { 
    return $resource(basePath + url, { 
      access_token: cbssportsTokens['access_token'], 
      response_format: 'JSON', 
      callback: 'JSON_CALLBACK' 
    }, { 
     get: { 
      method: 'JSONP' 
     } 
    }); 
    } 

Я пошел вперед и использовать запрос JSONP вместо GET, сервер к.б.н., кажется, быть счастливым с этим.

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