リクエストの形式が不正か、無効です。
使いどころ
解析できない 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 / Express | res.status(400).end() |
|---|---|
| Python / Flask | return '', 400 |
| nginx | return 400; |
確認方法
curl -s -o /dev/null -w "%{http_code}\n" https://example.com/