2016-09-15 3 views
0

jsonpメソッドでcoursera apiをAngularでリクエストしようとすると、次のエラーが発生します。そのMIMEタイプ(「アプリケーション/ JSON」)が実行されず、 厳密なMIMEタイプチェックが有効になっているためAngular jsonpがcoursera apiにエラーを通知しています

は 「https://api.coursera.org/api/courses.v1?callback=angular.callbacks._0」 からスクリプトを実行することを拒否しました。

私は他の回答をしましたが、正しい解決策を見つけることができませんでした。

これは他の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権限を付与していないため、クライアントから直接ではなく別のサーバー経由でデータを取得する必要がありません)

関連する問題