Почему я блокируюсь на CORS при попытке доступа к API publi c? - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь получить доступ к правительству 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 веб-приложения?

1 Ответ

0 голосов
/ 16 апреля 2020

Мне удалось исправить это с помощью запроса 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;
         }); 
...