Как работать с удаленными API через Angular?

Есть сервис с доступным API. Есть код на JS с использованием Angular:
(function(){
	'use strict';
	var app = angular.module('myApp', ['onsen.directives']).config(function($httpProvider){
	    delete $httpProvider.defaults.headers.common['X-Requested-With'];
	});
	app.controller('HttpController', function($scope, $http) {
	    $scope.test = function() {
		$http({method: 'GET', url: 'https://www.eobot.com/api.aspx?email=XXXXX&password=YYYYY '}).
		    success(function(data, status, headers, config) {
			console.log(data);
		    }).
		    error(function(data, status, headers, config) {
			console.log(data);
		    });
	    }
	})
})();

Проблема при выполнении следующая:

XMLHttpRequest cannot load https://www.eobot.com/api.aspx?email=XXXXXX&passwo.... No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'localhost:8090' is therefore not allowed access.

Уже находил в гугле такую проблему, советуют удалять заголовок при конфиге модуля. Вроде как я добавил предлагаемую строку, результат один и тот же. Какие возможны решения?
  • Вопрос задан
  • 4073 просмотра
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Cross-origin resource sharing оно хочет.

Решения проблемы (в порядке адекватности, если можно так сказать):
  • свой прокси для этой апишки на сервере с поддержкой CORS/Jsonp
  • писать разработчику API-сервиса что бы добавили поддержку CORS.
  • запускать браузер с отключенным web-security (не знаю как для других, но в хроме это флаг --disable-web-security).


Апишка о которой вы говорите создавалась для использования в приложениях, где нету таких вещей как кросдоменные запросы в принципе. Так что о поддержке для браузерного JS никто особо не думал. На phonegap-приложения так же не распространяются ограничения на кросс-доменные запросы.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
maxaon
@maxaon
Access-Control-Allow-Origin надо добавлять на сервере api ('https://www.eobot.com/').
По другому - толль jsonp или проксирование запросов через себя.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы