233
19142
私はしばらくの間JSONをいじり回していて、テキストとしてプッシュするだけで、(私が知っている)誰も傷つけていませんが、適切に作業を開始したいと思います。
JSONコンテンツタイプの「標準」と称されるものをたくさん見てきました。
アプリケーション/ json
application / x-javascript
text / javascript
text / x-javascript
text / x-json
しかし、どちらが正しいか、または最良ですか?私は、セキュリティとブラウザサポートの問題がそれらの間で異なることを収集します。
同様の質問があることは知っています。JSONがRESTAPIによって返される場合のMIMEタイプは何ですか?しかし、もう少し的を絞った回答が必要です。 
1
2
次
JSONテキストの場合:
アプリケーション/ json
JSONテキストのMIMEメディアタイプはapplication / jsonです。デフォルトのエンコーディングはUTF-8です。 (出典:RFC 4627)。
コールバック付きのJSONP(実行可能なJavaScript)の場合:
アプリケーション/ javascript
関連するコメントで言及されたいくつかのブログ投稿は次のとおりです。
JSONにtext / htmlを使用すべきでない理由
InternetExplorerでapplication / jsonに問題が発生することがあります
Mimetypesのかなり完全なリストとそれらを何に使用するか
以下の@gnrfanの回答からのIANAの公式mimeタイプリスト
|
IANAは、JSONの公式MIMEタイプをapplication / jsonとして登録しました。
text / jsonを使用しない理由について尋ねられたとき、Crockfordは、JSONは実際にはJavaScriptでもテキストでもない、またIANAはtext / *よりもapplication / *を配布する可能性が高いと述べたようです。
その他のリソース:
メディアタイプ
コメントのリクエスト4627
bluesmoon:JSONにはタイプがあります
|
JSONの場合:
コンテンツタイプ:application / json
JSON-Pの場合:
コンテンツタイプ:application / javascript
|
もちろん、JSONの正しいMIMEメディアタイプはapplication / jsonですが、アプリケーションで予期されるデータのタイプを理解する必要があります。
たとえば、Ext GWTを使用しており、サーバーの応答はtext / htmlとして送信する必要がありますが、JSONデータが含まれています。
クライアント側、ExtGWTフォームリスナー
uploadForm.getForm()。addListener(new FormListenerAdapter()
{{
@オーバーライド
public void onActionFailed(Form form、int httpStatus、String responseText)
{{
MessageBox.alert( "エラー");
}
@オーバーライド
public void onActionComplete(Form form、int httpStatus、String responseText)
{{
MessageBox.alert( "Success");
}
});
application / json応答タイプを使用する場合、ブラウザーはファイルを保存するように提案します。
SpringMVCを使用したサーバー側のソースコードスニペット
新しいAbstractUrlBasedView()を返します
{{
@SuppressWarnings( "unchecked")
@オーバーライド
protected void renderMergedOutputModel(マップモデル、HttpServletRequestリクエスト、
HttpServletResponse応答)が例外をスローします
{{
response.setContentType( "text / html");
response.getWriter()。write(json);
}
};
|
JSON:
応答は、URLで渡されたクエリパラメータに従って動的に生成されたデータです。
例:
{"名前": "Foo"、 "Id":1234、 "ランク":7}
コンテンツタイプ:application / json
JSON-P:
パディング付きのJSON。
応答はJSONデータであり、関数呼び出しがラップされています。
例:
functionCall({"Name": "Foo"、 "Id":1234、 "Rank":7});
コンテンツタイプ:application / javascript
|
UbuntuまたはDebianを使用していて、Apacheを介して.jsonファイルを提供する場合は、正しいコンテンツタイプでファイルを提供することをお勧めします。私は主にFirefox拡張機能JSONViewを使用したいのでこれを行っています
Apacheモジュールmod_mimeは、これを簡単に行うのに役立ちます。ただし、Ubuntuでは、ファイル/etc/mime.typesを編集して、行を追加する必要があります。
アプリケーション/ jsonjson
次に、Apacheを再起動します。
sudo service apache2 restart
|
クライアント側からASP.NETWebサービスを呼び出す場合は、application / jsonを使用して機能させる必要があります。これはjQueryフレームワークとExtフレームワークでも同じだと思います。
|
JSONの適切なコンテンツタイプはapplication / jsonです。ただし、JSONP(JSON with Paddingとも呼ばれます)は実際にはJavaScriptであるため、適切なコンテンツタイプはapplication / javascriptになります。
|
application / jsonがJSON応答に最適なMIMEタイプであることは間違いありません。
しかし、いくつかの圧縮の問題のために、application / x-javascriptを使用しなければならなかった経験がありました。私のホスティング環境はGoDaddyとの共有ホスティングです。サーバー構成を変更することはできません。応答を圧縮するために、web.configファイルに次のコードを追加しました。
















これを使用することにより、.aspxページはg-zipで圧縮されましたが、JSON応答は圧縮されませんでした。追加した

静的タイプと動的タイプのセクション。ただし、これはJSON応答をまったく圧縮しません。
その後、この新しく追加されたタイプを削除して追加しました

静的タイプと動的タイプの両方のセクションで、応答タイプを変更しました
.ashx(非同期ハンドラー)から
application / x-javascript
そして今、私のJSON応答がg-zipで圧縮されていることがわかりました。だから私は個人的に使用することをお勧めします
application / x-javascript
共有ホスティング環境でJSON応答を圧縮する場合のみ。共有ホスティングでは、IISを変更できないためです構成。
|
MIMEタイプとしてapplication / jsonを使用する場合にのみ、次のものがあります(2011年11月現在、Chromeの最新バージョン、Firebugを搭載したFirefox)。
JSONがサーバーから読み込まれるときにChromeからの警告はもうありません。
Firebugは、JSONデータを表示するタブを応答に追加します
フォーマットされます。 MIMEタイプが異なる場合は、次のように表示されます。
「応答内容」。
|
すべてがコンテンツタイプapplication / jsonで機能するわけではありません。
Ext JSフォーム送信を使用してファイルをアップロードしている場合は、サーバーの応答がブラウザによって解析され、