ボディの形式がサポートされていません。
使いどころ
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 / Express | res.status(415).end() |
|---|---|
| Python / Flask | return '', 415 |
| nginx | return 415; |
確認方法
curl -s -o /dev/null -w "%{http_code}\n" https://example.com/