2017-01-09 5 views
0

Я пытаюсь получить результаты от this endpoint. Используя GET, я получаю ошибку CORS, поэтому я пытаюсь использовать jsonp.

Результаты

Refused to execute script from 'https://api.airbnb.com/v2/listings/16218947?client_id=3092nxybyb0otqw18e8nh5nty&_format=v1_legacy_for_p3&callback=angular.callbacks._0' 
because its MIME type ('application/json') is not executable, 
and strict MIME type checking is enabled. 

Мой код

var API_BASE_URL = 'https://api.airbnb.com/v2/'; 

function getListing(id) { 
    var url = API_BASE_URL + 'listings/' + id + '?client_id=3092nxybyb0otqw18e8nh5nty&_format=v1_legacy_for_p3'; 

    var trusted = $sce.trustAsResourceUrl(url); 

    return $http.jsonp(trusted, { 
    jsonpCallbackParam: 'callback', 
    headers: { 
     'Accept': 'application/javascript' 
    } 
    }); 
}; 

ответ

0

Причина вы получаете эту ошибку, потому что в конечной точке, даже то, что вы указали параметр callback, по-прежнему возвращает JSON который, вероятно, означает что конечная точка не поддерживает JSONP.

Смотрите здесь: https://api.airbnb.com/v2/listings/16218947?client_id=3092nxybyb0otqw18e8nh5nty&_format=v1_legacy_for_p3&callback=angular.callbacks._0

Это JSON и не JSONP содержание, которое является то, что сервер должен вернуть в этом случае.

В основном способ, которым реализован $http.jsonp, заключается в том, что он вводит в ваш DOM элемент <script> с его свойством src, указывающим на предоставленный url. Но поскольку сервер не переносит JSON в функцию обратного вызова (JSONP), это не может быть включено как допустимый скрипт и, следовательно, результирующая ошибка.

Поскольку CORS и JSONP не являются параметрами, возможно, вам потребуется написать сценарий на стороне сервера в вашем домене, который будет действовать как прокси-сервер между вашим доменом и удаленным. Затем отправьте запрос AJAX на ваш скрипт.

+0

Если я отправляю запрос через свой домен, я не получу ошибку CORS? –

+0

Нет, конечно нет. CORS - это всего лишь понятие, которое существует в изолированных браузерах и является ограничением для javascript. На вашем сервере вы можете выполнять любые запросы в любой домен, который вы хотите, используя серверный язык, такой как PHP. –

 Смежные вопросы

  • Нет связанных вопросов^_^