19

インターネット上の一部の JSON データ サービスは、サーバーによってのみ消費されるように設計されており、Web 専用アプリによって直接消費される可能性を無視しています。

クロスサイトの問題により、そのようなサービスは、JSONPフォーマットを提供するかCORSサポートを有効にする場合に機能します。

JSONを返すだけで をサポートしないオンライン リソースを呼び出すことができる小さな JavaScript ツールを作成したいと考えています。

1 つの例として、私が作成していた単一ページのアプリがありましたが、そのために見つけた唯一のデータ ソースは、CORSまたはJSONP. 単一ページのアプリであるため、独自のサーバーがなかったため、同一オリジン ポリシーの対象でした。

そのような場合に利用できる戦略は何ですか?

4

1 に答える 1

38

**1 つの方法は、データ ソースにアクセスできるプロキシを見つけて、クロスサイトの問題を気にせずに処理できる、 、またはその他の形式でJSON動作するように変換された Web アプリに提供することです。JSONCORS

そのようなプロキシの 1 つがYahoo の「YQL」です。

YQL は JSONP と CORS の両方をサポートしています。

したがって、ブラウザーが CORS もサポートしている場合は、無料の JSON から JSON へのプロキシ サーバーと考えることができます。そうでない場合は、無料の JSON から JSONP へのプロキシでもあります。

これを jQuery で使用した例を次に示します。

$.getJSON("http://query.yahooapis.com/v1/public/yql",
  {
    q:      "select * from json where url=\"http://airportcode.riobard.com/airport/" + code + "?fmt=JSON\"",
    callback: gotJSON, // you don't even need this line if your browser supports CORS
    format: "json"
  },
  function(data){
    if (data.query.results) {
      /* do something with
        data.query.results.json.code
        data.query.results.json.name
        data.query.results.json.location
      */
    } else {
      /* no info for this code */
    }
  }
);

そしてjsfiddleのバージョン...

于 2011-12-20T17:06:14.753 に答える