別ドメインのサーバーにJSONファイルを配置して$.getJSONをテストしたときのメモ。
最初にまとめとして、$.getJSONを色々と試してみた結果、クロスドメインに対処するための裏ワザ的な作業や要素(「Access-Control-Allow-Origin」の設定)があり、それ以外にもエラーや不具合が多くて、WebAPIを利用するときに$.getJSONで直接ではなくPHPを挟んで使うべきなんでしょうというのが結論。
ローカルサーバーも利用して試したこともあるので一概には言えない部分もあると思いますけれど、他にもステータス200なのに意図したとおりの処理にならないなど、もろもろ使いずらい。
たぶん、ほぼ直接APIにアクセスするために$.getJSONは使わないとおもいますが、使う場合もあるかもしれないので忘れそうなことで気になった点をメモします。
オリジン間リソース共有 (CORS) - HTTP | MDN
オリジン間リソース共有 (Cross-Origin Resource Sharing, CORS) は、追加の HTTP ヘッダーを使用して、あるオリジンで動作しているウェブアプリケーションに、異なるオリジンにある選択されたリソースへのアクセス権を与えるようブラウザーに指示するための仕組みです。ウェブアプリケーションは...
$.getJSONに設定するJSON形式のデータのファイル名は、json.jsonとするとエラーになる。
$.getJSON("http://example.com/json.json", function(data){ //エラー
JSONP形式のファイルを$.getJSONでロードするとき、コールバック(?callback=?)なしで読み込むとエラーになる。というか関数実行されるけれどサーバー拒否みたいな・・・
$.getJSON("http://example.com/jsonp1.js", function(data){ //エラー
JSONP形式のファイルの拡張子は、.jsにする。それ以外は警告?がでる。
スポンサーリンク
コメント