JSON(ジェイソン)とは
「JavaScript Object Notation」の略。
JSONは、数値や文字列や配列やオブジェクトなどのデータを、文字列で表現できる軽量なフォーマット。
JSONP(ジェイソンピー)とは
「JavaScript Object Notation with padding」の略。
JSONPとは、scriptタグを使用してクロスドメインなデータを取得する仕組みのことである。
HTMLのscriptタグ、JavaScript(関数)、JSONを組み合わせて実現される。
JSONPでは、関数に引数として JSONオブジェクトを指定した形式になります。
クロスドメイン制約
クロスドメイン制約は「ブラウザ上で実行されるJavaScriptは同じドメインにしかリクエストの送信やクッキーの編集を行えない」という制限で、悪意あるサイトにアクセスした際に情報が漏洩することを防ぐためにブラウザが提供する仕組み。
クロスドメイン制約が重要なのは、悪意あるJavaScriptがユーザーのブラウザ上で実行され、銀行などのサーバーにアクセスして機密情報を盗み出す事を防ぐためであり、このおかげで、悪意のあるJavaScriptが実行されても、機密情報にはアクセスできない。
[参考] 同一生成元ポリシー
Webページは通常、自分を生成したドメイン以外のドメインのサーバと通信することはできない。
しかし、HTMLのscriptタグのsrc属性には別ドメインのURLを指定して通信することができるという点を
利用することによって別ドメインのサーバからデータを取得することが可能になる。
まとめ
そこで先ほど紹介したJSONPでは、クロスドメイン制約を回避して通信するため、わざわざサーバー側で対応が必要になる。
JSONPのAPIをわざわざ用意するということは、そこで提供される情報は機密情報ではないはずなので、クロスドメインなデータも取得できる。
だから、クロスドメイン対応 ➡︎ JSONP のようだ。