web http mime content-type server browser dev-tech file-extensions

MIMEタイプとContent-Type完全リファレンスガイド

MIMEタイプとは何か、なぜWebサーバーやブラウザにとって重要なのでしょうか?application/json、image/webpなど、主要なContent-Typeの完全なリファレンスを解説します。

2026-04-11

MIMEタイプとContent-Type完全リファレンスガイド

ブラウザがウェブサーバーにファイルをリクエストするたびに、サーバーは単にビットやバイトを送信するだけではありません。また、それがどのような種類のファイルであるかをブラウザに伝える「ラベル」も送信します。このラベルは MIMEタイプ(Multipurpose Internet Mail Extensions)と呼ばれ、Content-Type HTTPヘッダーを介して送信されます。

サーバーが誤ったMIMEタイプを送信すると、ブラウザは動画を再生する代わりにダウンロードしようとしたり、セキュリティ上の理由でスクリプトの実行を拒否したりすることがあります。


クイックリファレンス表:一般的なMIMEタイプ

MIMEタイプ 一般的な拡張子 カテゴリ 用途
text/html .html, .htm ウェブページ 標準的なウェブページコンテンツ
text/css .css スタイリング カスケーディング・スタイル・シート
application/javascript .js ロジック ウェブアプリケーションスクリプト
application/json .json データ API用の構造化データ
application/xml .xml データ Extensible Markup Language
text/csv .csv データ カンマ区切り値
image/webp .webp メディア モダンな圧縮画像形式
image/avif .avif メディア 高効率画像形式
font/woff2 .woff2 フォント モダンなウェブフォント形式
application/wasm .wasm コンパイル済み WebAssemblyバイナリコード
application/octet-stream .bin, .exe バイナリ 汎用バイナリデータ(通常はダウンロードをトリガー)
multipart/form-data N/A アップロード ファイルアップロードを含むフォーム送信に使用

1. 構造化データとAPI

現代のウェブアプリケーションは、フロントエンドとバックエンドの間で情報を交換するために、これらのタイプに大きく依存しています。

  • application/json: REST APIの業界標準です。軽量で、JavaScriptによってネイティブにサポートされています。
  • application/xml: 古い形式ですが、カスタムスキーマや複雑なバリデーションをサポートする強力な形式です。
  • text/csv: データベースやスプレッドシートから大規模なデータセットをエクスポートする際によく使用されます。

2. メディアとアセット

高速なロード時間を確保するために、サーバーはモダンで高圧縮なメディア形式を正しく識別する必要があります。

  • image/webp & image/avif: これらのモダンな形式は、JPEGやPNGよりもはるかに優れた圧縮を提供します。サーバーが正しいMIMEタイプを送信しないと、ブラウザが画像を正しくレンダリングできない場合があります。
  • font/woff2: ウェブタイポグラフィに不可欠です。正しいMIMEタイプにより、ブラウザはフォントを迅速に展開できます。

3. 特殊なデータとバイナリデータ

  • application/wasm: WebAssemblyが機能するために必要です。ブラウザは非常に厳格で、サーバーが明示的に application/wasm Content-Type を送信しない限り、WASMモジュールのコンパイルを拒否することがよくあります。
  • application/octet-stream: これはバイナリデータの「キャッチオール(何でも屋)」です。サーバーがファイルの正体を知らない場合、通常これにデフォルト設定されます。ブラウザはこれを、表示しようとするのではなく、ファイルをダウンロードする合図として扱います。

4. フォームとアップロード

ウェブサイトでフォームを送信すると、ブラウザは特定のMIMEタイプを使用して入力をエンコードします。

  • application/x-www-form-urlencoded: シンプルなテキストベースのフォームのデフォルトです。URLクエリ文字列(name=John&age=30)のように見えます。
  • multipart/form-data: フォームに ファイルアップロード が含まれる場合に必要です。これにより、ブラウザは異なる種類のデータ(テキストとバイナリファイル)を「境界(boundary)」で区切って単一のリクエストで送信できます。

ファイルのMIMEタイプを確認する方法

  • ブラウザで: DevToolsを開き、「ネットワーク(Network)」タブをクリックします。リクエストをクリックし、「レスポンスヘッダー(Response Headers)」セクションの「Content-Type」を探します。
  • Linux / macOSで: --mime-type フラグを付けて file コマンドを使用します。
    file --mime-type -b my-image.webp
    # 出力: image/webp
    

よくある質問 (FAQ)

Q: サーバーが誤ったContent-Typeを送信するとどうなりますか?

A: ブラウザはしばしば「MIMEスニッフィング(MIME Sniffing)」を行って正しいタイプを推測しようとします。しかし、セキュリティ上の理由(XSSからの保護など)から、現代のブラウザは非常に厳格になっています。スクリプトが application/javascript ではなく text/plain で送信された場合、ほとんどのブラウザは実行を拒否します。

Q: application/javascript はJSファイルにとって唯一の正しいタイプですか?

A: 歴史的には、text/javascriptapplication/x-javascript が使われてきました。かつては application/javascript が正式な推奨でしたが、最新の標準では実際には text/javascript を好む方向に再び戻っています。ほとんどのサーバーとブラウザは両方を問題なく処理します。

Q: なぜ「No 'Content-Type' header」エラーが出るのですか?

A: これは、サーバーがファイルタイプに関する情報を何も提供しなかったことを意味します。ブラウザは通常、text/plain または application/octet-stream にデフォルト設定されます。これにより、ページが正しく表示されなかったり、不要なダウンロードが開始されたりする可能性があります。


Tool3Mの関連ツール