Я пытаюсь получить доступ к правительству Ontar ios COVID-19 CKAN API через мое веб-приложение AngularJS. Однако этот запрос:
var url = "https://data.ontario.ca/api/3/action/datastore_search?q=jones&resource_id=455fd63b-603d-4608-8216-7d8647f43350" return $http.get(url).then(function (data) { console.log(data) return data; }); };
встречается с ответом:
Доступ к XMLHttpRequest по адресу https://data.ontario.ca/api/3/action/datastore_search?q=jones&resource_id=455fd63b-603d-4608-8216-7d8647f43350 из источника ' http://localhost: 3000 'заблокировано политикой CORS: на запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin».
Этот пример приведен на веб-сайте для доступа API через JavaScript:
var data = { resource_id: '455fd63b-603d-4608-8216-7d8647f43350', // the resource id limit: 5, // get 5 results q: 'jones' // query for 'jones' }; $.ajax({ url: 'https://data.ontario.ca/api/3/action/datastore_search', data: data, dataType: 'jsonp', success: function(data) { alert('Total results found: ' + data.result.total) } });
Как я могу успешно сделать запрос к этому API из моего AngularJS веб-приложения?
Мне удалось исправить это с помощью запроса JSONP вместо стандартного GET.
var url = "https://data.ontario.ca/api/3/action/datastore_search?q=jones&resource_id=455fd63b-603d-4608-8216-7d8647f43350" return $http.jsonp($sce.trustAsResourceUrl(url)).then(function (data) { return data; });