Content-Type はなぜ大事か
Content-Type は、サーバーが「このデータは何か」をブラウザに伝える HTTP ヘッダです。 これを間違えると、動画が再生されずダウンロードになったり、逆に危険なファイルがインラインで開いたりします。 アップロードを受ける側も、拡張子や Content-Type を鵜呑みにせず、先頭バイト(マジックバイト)で 実体を確かめるのが安全です。
拡張子と中身が食い違うファイルや、シグネチャを壊したファイルで挙動を試したいときは 壊れたファイルを、実際に各 Content-Type で配られる ダミーファイルが欲しいときは テストファイルをどうぞ。
ヘッダの指定例
動画をインライン再生させる
Content-Type: video/mp4ZIP をダウンロードさせる
Content-Type: application/zip / Content-Disposition: attachmentよくある質問
mp4 の Content-Type(MIME タイプ)は何ですか?
mp4 の MIME タイプは video/mp4 です。動画配信やアップロードのレスポンスヘッダには Content-Type: video/mp4 を指定します。webm は video/webm、mov は video/quicktime です。
zip の Content-Type は何ですか?
zip の MIME タイプは application/zip です。ダウンロードさせる場合は Content-Type: application/zip に加えて Content-Disposition: attachment を付けます。
MIME タイプが分からない・判別できないときは?
判別できない任意のバイナリには application/octet-stream を使います。これはブラウザに「表示せずダウンロードして」と伝える既定値です。拡張子ではなく先頭バイト(マジックバイト)で判定するのが確実です。
js の Content-Type は text/javascript ですか application/javascript ですか?
現在の標準(IANA・HTML仕様)では text/javascript が推奨です。application/javascript も長く使われてきましたが、新しく指定するなら text/javascript が無難です。