Угловой 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, поэтому вам не нужно получать данные через другой сервер, а не напрямую с клиента)