JSON と JSONP
AngularJS の勉強をしていたら $http.jsonp() が出てきて「!?」となったので JSONP について調べてみた。
こちらの記事がわかりやすかった。
JSONPで悩むある程度の人々へ
今まで違いを意識したことがなかったけれど、異なるドメインの JSON データを取得する場合は JSONP を使うっていう認識でよいのだろうか。
ライブラリを使っているとラップされていてわからないけれど、同じ JSON データを取得するのでも、同一ドメインからの場合と異なるドメインからの場合で、内部の実装がだいぶ異なる。
jQuery
同一ドメインの JSON データを取得する場合
$.getJSON('somedata.json', function(data) { console.log('name: ' + data.name); console.log('value: ' + data.value); });
異なるドメインの JSON データを取得する場合
$.getJSON('http://somecompany.com/somedata.json?callback=?', function(data) { console.log('name: ' + data.name); console.log('name: ' + data.value); });
AngularJS
同一ドメインの JSON データを取得する場合
$http.get('somedata.json', function(data) { console.log('name: ' + data.name); console.log('value: ' + data.value); });
異なるドメインの JSON データを取得する場合
$http.jsonp('http://somecompany.com/somedata.json?callback=JSON_CALLBACK', function(data) { console.log('name: ' + data.name); console.log('name: ' + data.value); });