asp.net MVC の観点から、JSON、JSONP、CORS の違いを理解するのを手伝ってくれる人はいますか?
2 に答える
JSON はデータ形式ですが、JSON-P と CORS はクロスドメインのデータ要求を行うためのメカニズム/プロトコルです。
JSONは、データを表現するための形式です。最初は JavaScript で定義されましたが、API がデータを表現するための事実上の方法に成長しました。ほとんどの言語には、JSON を解析するためのライブラリがあります。この形式の詳細については、http: //json.org/を参照してください。JSON オブジェクトの例を次に示します。
{
"key": "value"
}
JSON-Pは、JavaScript でデータをロードするためのメカニズムです。別のドメインからデータをロードするために、ブラウザーの同一生成元ポリシーをバイパスします。これは、JavaScriptscript
をページに埋め込むことによって行われます。このスクリプトは、JavaScript 関数にラップされたデータを返すリモート ドメインを呼び出します。この関数がブラウザに戻ると実行され、呼び出し元のコードがデータにアクセスできるようになります。
名前には「JSON」という単語が含まれていますが、JSON-P は必ずしも JSON で動作する必要はありません。たとえば、文字列またはその他の有効な JavaScript データ型をユーザーに返すことができます。
JSON-P はすべてのブラウザーで機能しますが、ブラウザーの同一生成元ポリシーを回避するためのハックであり、いくつかの制限があることに注意してください。たとえば、GET 要求しか発行できず、呼び出し元は応答ヘッダーにアクセスできません。JSON-P はブラウザーと JavaScript にカスタム化されているため、サーバーサイド Python などの他の言語からのデータへのアクセスにはあまり適していません。
JSON-P の詳細については、http: //en.wikipedia.org/wiki/JSONPをご覧ください。
CORSは、クロスドメイン リクエストを作成するための標準化されたメカニズムです。最新のほとんどのブラウザでサポートされています。クライアントは、標準の XmlHttpRequest オブジェクトを使用して CORS 要求を作成します。リクエストを受信すると、サーバーはクロスドメイン リクエストが許可されているかどうかを判断します。許可されている場合、サーバーは、応答をクライアントに渡すことができる特別なヘッダーを発行します。
CORS の仕様については、http://www.w3.org/TR/cors/ を参照してください。CORS の使用 方法については、http ://www.html5rocks.com/en/tutorials/cors/ を参照してください。
これらのテクノロジはすべて、ASP.NET MVC から独立しています。これらのテクノロジーを使用したい場合は、まず「ドメインを越えてデータにアクセスする必要があるか?」と自問する必要があります。答えが「はい」の場合は、「どのブラウザー/プラットフォームをサポートする必要がありますか?」と尋ねてください。答えが「最新のブラウザー」である場合は、CORS の実装を検討する必要があります。それ以外の場合は、JSON-P を使用する必要があります
CORSは、JSONPを新しいブラウザーで廃止する以外に、JSONPとは何の関係もない仕様です。通常のXMLHttpRequest呼び出しを使用してクロスドメインリクエストを有効にします。
仕組みと使い方の概要は次のとおりです。Firefox 3.5以降、Safari 4以降、Chrome 3以降、Internet Explorer 8以降、および同じエンジンの1つを使用するその他すべてで使用できます。
詳細については読み続けてください