2016-09-15 8 views
0

При попытке запросить курсор api с методом jsonp в Angular возникает следующая ошибка.Угловой запрос jsonp coursera api, дающий ошибку

Отказался выполнить скрипт из «https://api.coursera.org/api/courses.v1?callback=angular.callbacks._0» потому, что его MIME тип («применение/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 тип ('применение/JSON') не является исполняемым

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

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

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

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

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