こんにちは。EGセキュアソリューションズ診断チームです。JSONとJSONPという、Webサイトを構築する上でよく目にする技術について紹介したいと思います。
JSONとは?
JSONはXMLに代わるデータ交換形式として新たに提唱されたものです。JavaScriptのオブジェクトリテラルの形式をベースとして作られています。また、JSONはJavaScriptの式として解釈できる性質を持ちます。
JSONは名前と値がペアになっているデータの集合体として表されます。名前と値を「:」(コロン)でペアとして記述し、データの間は「,」(カンマ)で区切ります。
これらを{}で囲んだものがJSON形式となります。実際のデータ例を下記に記します。
{ “title” : “Hello JSON!” , “No” : 123 }
JSONPとは?
JSONPとはJSON with Paddingの略です。名前にJSONと含まれているため、同じようなものと思ってしまいがちですが、全く違うものです。
元々、データを異なるオリジン間でやり取りを行うために色々な手法が試されていましたが、
そのうちの一つがJSONPです。JSONのやり取りにはXMLHttpRequestが使用されていますが、XMLHttpRequestは元々同一オリジンポリシーの制約を受けていた(現在はCORSにより回避可能)ため、そのままでは異なるオリジン間でデータを受け渡すことができません。
そのため、XMLHttpRequestを使用せず、script要素を使用して外部のJavaScriptを直接実行することにより、異なるオリジン間でデータをやり取りするという方法が考案されました。これがJSONPです。
ただし、やり取りするデータがJSONの場合、JSON文字列そのままではscript要素でデータを受け取ることができないため、関数呼び出しの形でデータを生成します。
JSONとJSONPの違い
ここまで簡単にJSONとJSONPの概要を述べましたが、一言で書くと次のように表すことができます。
- JSON:データ交換用の形式、またはデータそのもの
- JSONP :データそのものを異なるオリジン間でやり取りするための手法
- カテゴリ:
- 用語