Угловой JSONP запрос Coursera API дает ошибку

Следующая ошибка выдается, когда я пытаюсь запросить Coursera API с помощью метода jsonp в Angular.

Отказался выполнять скрипт из " https://api.coursera.org/api/courses.v1?callback=angular.callbacks._0", потому что его тип MIME ("application/json") не является исполняемым, и строгая проверка типов MIME включен.

Я прошел через другие ответы, но не смог найти правильного решения.

Это мой код, который, я думаю, сделан правильно, так как он успешно извлекает другие ресурсы CORS. Я не знаю, что происходит с Coursera API.

var deferred = $q.defer();
var url = "https://api.coursera.org/api/courses.v1?callback=JSON_CALLBACK";
$http.jsonp(url).success(function(data) {
  deferred.resolve(data);
  })
  .error(function(data, status, headers, config) {
    deferred.reject(status);
    });
return deferred.promise;

1 ответ

Решение

Отказался от выполнения скрипта... потому что его MIME-тип ('application/json') не является исполняемым

URL https://api.coursera.org/api/courses.v1?callback=JSON_CALLBACK возвращает JSON, а не JSONP.

Когда вы делаете запрос JSONP, сервер должен ответить данными, отформатированными в JSONP (это особая форма сценария JavaScript). Сервер, с которым вы разговариваете, не работает.

Это мой код, который, я думаю, сделан правильно, так как он успешно извлекает другие ресурсы CORS.

JSONP - это то, что мы использовали до появления CORS. Это умный, но грязный хак с некоторыми последствиями для безопасности.

Если вместо этого вы можете использовать CORS, используйте CORS. (Сервер также не предоставляет разрешения CORS, поэтому вам не нужно получать данные через другой сервер, а не напрямую с клиента)

Другие вопросы по тегам