本文へ移動
Develop Tools
← 使い方ガイドへ戻る

415 Unsupported Media Typeの原因と対処|Content-Type・JSON・ファイル形式を確認

415はTarget ResourceがRequest Contentの形式をSupportしない場合に使われます。Headerだけと断定せずBodyとAPI仕様も照合します。

text/plainのJSON Requestをapplication/jsonへ直してHTTP 415を解消する確認図
text/plainのJSON Requestをapplication/jsonへ直してHTTP 415を解消する確認図

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 Typeapplication/json等
HeaderContent-Type/EncodingBodyと一致
BodyJSON/multipart/binaryParserで読める

Requestを修正する

  • API Documentationで許可Media Typeを確認します。
  • Network Logまたはcurlで実Headerを確認します。
  • Bodyを対応形式へ直します。
  • ProxyやGatewayの変換も含めて再送します。

拡張子・Media Type・実データ・Content-Typeを分ける

情報確認できること
File Namereport.pdf利用者やApplicationが付けた名前
Extension.pdf名前上のSuffix。内容を保証しない
Media Typeapplication/pdfデータ形式を表す登録上・運用上の識別子
Actual Content%PDF-...等実際のByte列やParserで扱える形式
HTTP Content-Typeapplication/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、videoIANA 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ではありません。

関連ツールと一次資料

正式なMedia Typeと登録状態はIANAを基準にし、HTTPの意味はRFC 9110、Upload SecurityはOWASP等の一次資料と利用Frameworkの公式資料を確認します。

JSON POSTを再確認する

MIME一覧でapplication/jsonを検索し、Request Headerへ設定します。

修正後はHeader名だけでなく、BodyやFileの実形式と利用Applicationの許可条件も再確認します。

  1. API仕様確認
  2. 実Header取得
  3. JSON構文確認
  4. 再送してStatus確認

Authorization等の機密Headerは共有前に削除してください。

よくある質問

拡張子が分かればファイル形式を確定できますか?
確定できません。拡張子は一般的な候補を探す入口であり、必要に応じてFile Signature、Parser、実Contentも確認します。
application/octet-streamはエラーですか?
エラーとは限りません。汎用Binaryとして意図的に使われる場合と、保存時に具体的なContent-Typeが設定されなかった場合があります。
このツールでアップロードファイルの安全性を判定できますか?
できません。File内容を読み込むSecurity Scannerではなく、拡張子とBrowser提供のMIME情報を内蔵辞書と照合するToolです。