APIで使用するMIMEタイプを確認する
ExtensionまたはMedia Typeから検索し、登録状態、関連拡張子、Content-Type例を確認します。
MIMEタイプ一覧・拡張子検索を開く結論:API仕様、Content-Type、Bodyの3点を照合する
APIがapplication/jsonを要求するなら、Request HeaderだけでなくBodyが有効なJSONか確認します。
HTTP 415の原因はContent-Typeだけとは限らず、Content-EncodingやResource固有Policyも候補です。
JSONをtext/plainで送る例
POST /api/items HTTP/1.1
Content-Type: text/plain
{"name":"sample"}
Serverがapplication/jsonだけを受理する場合、形式不一致として拒否されます。
415の切り分け
API Documentationと実Requestを並べます。
| 確認対象 | 確認内容 | 判断 |
|---|---|---|
| API仕様 | 許可Media Type | application/json等 |
| Header | Content-Type/Encoding | Bodyと一致 |
| Body | JSON/multipart/binary | Parserで読める |
Requestを修正する
- API Documentationで許可Media Typeを確認します。
- Network Logまたはcurlで実Headerを確認します。
- Bodyを対応形式へ直します。
- ProxyやGatewayの変換も含めて再送します。
拡張子・Media Type・実データ・Content-Typeを分ける
| 情報 | 例 | 確認できること |
|---|---|---|
| File Name | report.pdf | 利用者やApplicationが付けた名前 |
| Extension | 名前上のSuffix。内容を保証しない | |
| Media Type | application/pdf | データ形式を表す登録上・運用上の識別子 |
| Actual Content | %PDF-...等 | 実際のByte列やParserで扱える形式 |
| HTTP Content-Type | application/pdf | 送信側がHTTP Messageの表現形式として通知する値 |
拡張子から一般的なMIMEタイプを推測できますが、File内部が本当にその形式か、安全か、Upload先が許可するかまでは判定できません。
MIMEタイプを確認して設定を直す手順
- 問題が起きているFile名、Extension、RequestまたはResponseのContent-Typeを記録します。
- MIME一覧へExtensionまたはMedia Typeを入力し、候補と登録状態を確認します。
- API Documentation、IANA登録、Format仕様と比較します。
- Content-Type、Accept、Content-Disposition、Upload Allowlistのうち該当する設定を修正します。
- Network Panel、curl、実API、実Browserで再確認します。
File UploadではMIMEタイプだけを信頼しない
Upload時のContent-TypeやFile.typeはClient側から提供され、偽装や誤判定が可能です。OWASPのDefense in Depthに沿い、用途に応じて複数の検証を組み合わせます。
- 許可するExtensionをAllowlistで限定し、二重拡張子や正規化後の名前も確認する。
- Content-Typeは補助情報として検証し、唯一の許可条件にしない。
- File Signature、ParserでのDecode可否、実Contentを必要に応じて確認する。
- File Size、保存名、保存先、権限、公開時のContent-Dispositionを設計する。
- 必要な業務ではMalware CheckやSandbox処理も別途実施する。
HTMLのaccept属性はFile Pickerの候補を絞るHintであり、Server側Security Validationの代わりにはなりません。
現在のMIMEタイプ一覧・拡張子検索で確認できること
| 機能 | 現在の対応 | 境界・注意点 |
|---|---|---|
| 検索 | .png、png、image/png、用途、別名を大文字小文字を区別せず部分一致 | File Binaryの内容判定や正規表現検索は行わない |
| 分類 | application、audio、font、image、message、model、multipart、text、video | IANA Registryの全登録を完全収録するものではない |
| 状態 | IANA登録済み、互換・旧来、非標準、非推奨 | Vendor TreeはMedia Type名とIANA参照から確認する |
| 逆引き | 1つの拡張子に対する複数候補、1つのMIMEタイプに対する複数拡張子 | 拡張子とMIMEタイプを1対1と仮定しない |
| コピー | MIMEタイプ、拡張子、詳細、HTTP Header例 | コピー値をServerへ送信しない |
| Local File照合 | File名、拡張子、Browser提供のFile.typeを内蔵辞書と比較 | File内容・Signature・Malwareを検査しない |
| Header生成 | Content-Type、charset、Content-Disposition、nosniff | 実Server設定やAPI送信は行わない |
ToolはMedia Typeを調べるための一覧です。Fileが安全かを判定するSecurity Scannerではありません。
関連ツールと一次資料
- HTTPステータスコード一覧で415を確認
- HTTPヘッダー解析でContent-Typeを確認
- JSON Tree ViewerでResponse構造を確認
- JSON FormatterでJSON構文を確認
- CSV・TSV Viewerで区切りと文字コードを確認
- 画像変換ツールで画像形式を変換
- 音声変換ツールで音声形式を変換
- Base64 Encoder / DecoderでData URLを確認
- IANA Media Types Registry
- RFC 6838: Media Type Specifications and Registration Procedures
- RFC 9110: HTTP Semantics
- MDN: Common media types
- MDN: Content-Type
- MDN: Accept
- MDN: X-Content-Type-Options
- WHATWG HTML: File Upload state
- OWASP File Upload Cheat Sheet
正式なMedia Typeと登録状態はIANAを基準にし、HTTPの意味はRFC 9110、Upload SecurityはOWASP等の一次資料と利用Frameworkの公式資料を確認します。
JSON POSTを再確認する
MIME一覧でapplication/jsonを検索し、Request Headerへ設定します。
修正後はHeader名だけでなく、BodyやFileの実形式と利用Applicationの許可条件も再確認します。
- API仕様確認
- 実Header取得
- JSON構文確認
- 再送してStatus確認
Authorization等の機密Headerは共有前に削除してください。
よくある質問
- 拡張子が分かればファイル形式を確定できますか?
- 確定できません。拡張子は一般的な候補を探す入口であり、必要に応じてFile Signature、Parser、実Contentも確認します。
- application/octet-streamはエラーですか?
- エラーとは限りません。汎用Binaryとして意図的に使われる場合と、保存時に具体的なContent-Typeが設定されなかった場合があります。
- このツールでアップロードファイルの安全性を判定できますか?
- できません。File内容を読み込むSecurity Scannerではなく、拡張子とBrowser提供のMIME情報を内蔵辞書と照合するToolです。