JSONのContent-Typeは「 text/javascript 」でなく「application/json」で。

JSONの「Content-Type」は、「application/json」と、RFCで決められているということは、もう周知の事実だと思います。

3月末にアナウンスされていたJSON仕様のRFCが、RFC 4627 The application/json Media Type for JavaScript Object Notation (JSON)として公開された。メディアタイプは表題の通りapplication/jsonで、標準ファイル拡張子は.jsonとなっている
ちょっとしたメモ – application/jsonがRFC4627に

例えばPHPでJSONファイルを出力したい時は、

header("Content-Type: application/json; charset=utf-8");

です。

ただ、「application/json」で出力していると、ブラウザで確認しようとした場合、ダウンロードした内容を確認しないといけないので、何かを作ってる過程では、これがちょっと不便で、ブラウザに表示させるのが便利だったりします。なので、

header("Content-Type: text/javascript; charset=utf-8");

としておいて、公開する時にまた変更したりしています。

この戻す作業をちょっと忘れてしまいがちで、そもそも、JSONはJavaScript(JSONは、JavaScript Object Notationの略)なんだから、もう「text/javascript」のままでもいいかなー。とか思ったのですが、そもそもブラウザに認識できてしまうのは、リスクありなわけですね。(そうか、そうか。)

Content-Typeが「text/html」になっていると,ブラウザはそのコンテンツをHTMLファイルとして解釈します。もし,攻撃者がコンテンツ内にscriptタグなどのHTML要素を挿入したら,ブラウザはそのコンテンツをHTMLだと解釈してしまうため,scriptタグ内に記述された JavaScriptコードが実行されてしまいます。 …

JSONをレスポンスする場合のContent-Typeは「application/json」,XMLをレスポンスする場合は「text/xml」もしくは「application/xml」を付けます。これにより,ブラウザがこれらのコンテンツを誤ってHTMLだと解釈しないようにします。
Content-Typeなどでクロスサイト・スクリプティングの危険度をチェック – ITpro

ということで、JSONの「content-type」は、やっぱり当たり前に「application/json」です。と。

カテゴリー: WEB技術のこと   タグ: ,   この投稿のパーマリンク

トラックバック

JSONのContent-Typeは「 text/javascript 」でなく「application/json」で。 への2件のコメント

  1. ピンバック: InternetExplorerでJSONのエラーが出たら-ITかあさん

  2. ピンバック: JSONPで悩むある程度の人々へ

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>