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. 

私のコードは、エンドポイントが、でもあなたがcallbackパラメータを指定したことを、まだJSONこれはおそらく手段を返すので、あなたは、このエラーを得ている理由は

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

でありますエンドポイントがJSONPもサポートしていないことを示します。

はこちらをご覧ください:https://api.airbnb.com/v2/listings/16218947?client_id=3092nxybyb0otqw18e8nh5nty&_format=v1_legacy_for_p3&callback=angular.callbacks._0

これは、サーバが、この場合に返すために必要なものであるJSONとJSONPないコンテンツです。

基本的に$http.jsonpが実装されているのは、提供されたURLを指すsrcプロパティを持つ<script>要素をDOMに挿入することです。しかし、サーバーはJSONをコールバック関数(JSONP)にラップしないので、これは有効なスクリプトとその結果のエラーとして含めることはできません。

CORSとJSONPはオプションではないので、ドメインとリモートドメイン間のプロキシとして機能するサーバーサイドスクリプトをドメインに作成する必要があります。次に、スクリプトにAJAXリクエストを送信します。

+0

ドメインからリクエストを送信しても、CORSエラーは発生しませんか? –

+0

いいえ、もちろんありません。 CORSは、サンドボックス化されたブラウザに存在する概念であり、javascriptの制限です。サーバー上では、PHPなどのサーバー側言語を使用して、任意のドメインへの要求を実行できます。 –

関連する問題