Я пытался получить доступ к sqwiggle API внутри моего приложения Angular и тестировал его с помощью Postman. Кажется, все работает нормально. Я определяю заголовок Basic Auth, делаю запрос GET на конечную точку сообщения, и получаю приятный ответ. Эти заголовки запроса (от Postman):AngularJS и внешний API - заставить его работать как PostMan
Request URL:https://api.sqwiggle.com/messages
Request Method:GET
Status Code:200 OK
Request Headersview source
Accept:*/*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8,nl;q=0.6
Authorization:Basic [secret]
Cache-Control:no-cache
Connection:keep-alive
Host:api.sqwiggle.com
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.70 Safari/537.36
Теперь в моем AngularJS приложение, я хочу сделать то же самое:
$http.get('https://api.sqwiggle.com/messages', {
headers: {
Authorization: 'Basic [secret]'
}
}).success(function(e) {
alert(e);
});
Но это приводит следующие заголовки запроса:
Request URL:https://api.sqwiggle.com/messages
Request Method:OPTIONS
Status Code:404 Not Found
Request Headersview source
Accept:*/*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8,nl;q=0.6
Access-Control-Request-Headers:accept, authorization
Access-Control-Request-Method:GET
Connection:keep-alive
Host:api.sqwiggle.com
Origin:http://localhost:8888
Referer:http://localhost:8888/
User-Agent:Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X; en-us) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53
Учитывая тот факт, что почтальон использует JS для получения данных из API, это должно быть возможно и в AngularJS, или я что-то пропустил здесь? Почему Angular преобразует GET в запрос OPTIONS и почему он не добавляет заголовок авторизации?
Спасибо за вашу помощь
http://stackoverflow.com/questions/16021442/how-postman-send-requests-ajax-same- политика происхождения предполагает, что почтальон имеет доступ к перекрестному домену, потому что это приложение Chrome. У моего приложения AngularJS нет. Это объясняет, почему это не работает. – Kukiwon
Итак, каково решение, если я хочу вызвать внешний API напрямую из Angualr JS. – Mukun