400 Bad Request

リクエストの形式が不正か、無効です。

使いどころ

解析できない JSON、必須フィールドの欠落、型の誤り。

よくある原因と対処法

よくある原因は、末尾のカンマやシングルクォートの文字列といった不正な JSON、宣言した Content-Type と一致しないボディ、必須フィールドの欠落、無効なクエリパラメーターです。サーバーを疑う前に、curl -v や DevTools の Network タブのリクエストペイロードで、実際に送信されたバイトを確認してください。ほとんどの API はレスポンスボディで問題を説明しているので、それを読みましょう。

インフラも 400 を返します。nginx は、Cookie が large_client_header_buffers からあふれると「Request Header Or Cookie Too Large」を、ポート 443 に http:// でアクセスすると「The plain HTTP request was sent to HTTPS port」を返します。ロードバランサーは不正なヘッダーや Host の値を拒否します。ブラウザーでだけ発生する 400 の多くは、サイトの Cookie を削除すれば直ります。自分のサーバーでは、400 はパースできない入力に限り、検証の失敗には 422 を使いましょう。

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

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

レスポンスでの表示

HTTP/1.1 400 Bad Request

返し方

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

確認方法

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

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