413 Content Too Large

リクエストボディがサーバーの受け付けるサイズを超えています。

使いどころ

サイズ上限を超えるアップロード。

よくある原因と対処法

ボディがどこかの層の上限を超えており、その層はアプリではないことがよくあります。nginx は client_max_body_size をデフォルトで 1m に設定しているため、http、server、location ブロックのいずれかで引き上げるまで、1 MB を超えるアップロードは 413 で失敗します。Cloudflare は Free と Pro プランでリクエストボディを 100 MB に、AWS API Gateway は 10 MB に、Lambda の同期呼び出しのペイロードは 6 MB に制限しています。

次にアプリを確認します。Express の express.json はデフォルトで 100kb に制限されており、PHP には upload_max_filesize(デフォルト 2M)と post_max_size(8M)があります。制限を変更したら、nginx や PHP-FPM のリロードを忘れないでください。大きなファイルは、経路上のすべての制限を引き上げるのではなく、署名付き URL でオブジェクトストレージに直接アップロードするか、チャンクに分割してアップロードしましょう。

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

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

レスポンスでの表示

HTTP/1.1 413 Content Too Large

返し方

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

確認方法

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

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