415 Unsupported Media Type

ボディの形式がサポートされていません。

使いどころ

JSON エンドポイントへのフォームデータの送信、または誤った Content-Type。

よくある原因と対処法

サーバーがボディの形式を解析できません。たいていは Content-Type がないか間違っていることが原因です。Content-Type: application/json なしで送られた JSON(curl -d のデフォルトは application/x-www-form-urlencoded)、JSON 専用のエンドポイントに送られた multipart のフォームデータ、サーバーが拒否する文字セットやベンダータイプなどです。Spring と ASP.NET は、宣言された型を受け付けるハンドラーがない場合に 415 を返します。

Content-Encoding も重要です。リクエストを展開しないサーバーに gzip 圧縮したボディを送ると 415 になります。ブラウザーでは、fetch に文字列のボディを渡すと、ヘッダーを設定しない限り text/plain;charset=UTF-8 が送られます。なお、application/json は CORS プリフライトを発生させますが、text/plain は発生させません。7.82 から使える curl --json は、Content-Type と Accept の両方を設定してくれます。

クライアントエラー (4xx)

4xx はクライアントエラーです。リクエスト自体が誤っている、認証されていない、または存在しないものを指しています。同じリクエストを再試行しても解決しません。

レスポンスでの表示

HTTP/1.1 415 Unsupported Media Type

返し方

Node.js / Expressres.status(415).end()
Python / Flaskreturn '', 415
nginxreturn 415;

確認方法

curl -s -o /dev/null -w "%{http_code}\n" https://example.com/

HTTP ステータスコードを開く