Междоменный запрос $http AngularJS
У меня есть простой сайт, который я создаю с помощью AngularJS, который вызывает API для json-данных.
Однако я все же сталкиваюсь с проблемой возникновения перекрестного домена, чтобы разрешить запросы на междоменные запросы?
Ошибка:
XMLHttpRequest не может загрузить http://api.nestoria.co.uk/api?country=uk&pretty=1&action=search_listings&place_name=soho&encoding=json&listing_type=rent. В запрошенном ресурсе нет заголовка "Access-Control-Allow-Origin". Происхождение 'http://localhost', следовательно, не допускается.
searchByPlaceName: function() {
var url = baseurl+'country=uk&pretty=1&action=search_listings&place_name=london'+encoding+type;
return $http.get(url);
}
Ответы
Ответ 1
Кажется, что api.nestoria.co.uk
не разрешает CORS. Он должен сам установить заголовок Access-Control-Allow-Origin
- у вас нет прямого контроля над этим.
Однако вы можете использовать JSONP. Этот сайт разрешает его с помощью параметра запроса callback
.
$http.jsonp(baseurl+'country=uk&pretty=1&action=search_listings&place_name=london'
+encoding+type + "&callback=JSON_CALLBACK")
Ответ 2
Установите Fiddler. Добавьте к нему настраиваемое правило:
static function OnBeforeResponse(oSession: Session)
{
oSession.oResponse.headers.Add("Access-Control-Allow-Origin", "*");
}
Это позволит вам делать запросы на междоменные запросы с localhost. Если API является HTTPS, убедитесь, что вы включили "дешифровать трафик HTTPS" в скрипаче.
Ссылка
-------------------- UPDATE
Ответ, который вы получаете, это JSON. Указание JSONP как типа данных не будет работать. Когда вы указываете JSONP, return должен быть функцией, а не объектом JSON.
JSONP