サーバーからJSONを取得していますが、ブラウザーにURLを入力すると、JSONデータが表示されます。また、curlを使用してJSONを取得すると、データも表示されます。しかし、ローカルでhtmlページを使用してデータにアクセスしようとすると、エラーが発生します。使ってみました
$.support.cors = true;
それでもエラーが発生します。とにかく、この考えられるクロスドメインの問題を解決できますか?
ありがとう、マット
サーバーからJSONを取得していますが、ブラウザーにURLを入力すると、JSONデータが表示されます。また、curlを使用してJSONを取得すると、データも表示されます。しかし、ローカルでhtmlページを使用してデータにアクセスしようとすると、エラーが発生します。使ってみました
$.support.cors = true;
それでもエラーが発生します。とにかく、この考えられるクロスドメインの問題を解決できますか?
ありがとう、マット
サーバーがをサポートしている場合は、URLに追加することJSONP
でデータを取得できます。getJSON
?callback=?
しかし、応答が次のようなjson形式の場合:
{a: 1, b:2}
その場合、ajaxを使用してデータを直接取得することはできません。1つの解決策は、サーバー側でプロキシを作成し、リモートのjsonデータを取得してから、ドメイン間の問題を回避するために再度出力することです。
他の回答は適切な代替案(JSONP)を提案していますが、それが機能しない理由を説明するために。
のサポートは、オンにcors
するだけのものではありません。これは、ブラウザとサーバーがサポートしなければならないものです。
詳細については、ここを参照してくださいが、要約すると:
Access-Control-Allow-Origin: *
ヘッダーを発行する必要があります(または*
許可するドメインに合わせて調整する必要があります)。APIドキュメントjQuery.support.cors
でのドキュメントも参照できます。
代わりに、クロスドメインリクエストにJSONP(パディング付きのJSON)を使用してください。jsonpの処理(基本的なエラー処理も)を簡単にするために、 jqueryプラグインも参照してください。これが良い例のページです。