400 Bad Request は汎用的なクライアントエラーです。構文の誤り、メッセージフレーミングの不正、欺瞞的なリクエストルーティング、不正な Host ヘッダー、無効なクエリパラメーター、解析できないボディなど、リクエストのどこかに問題があるとサーバーが判断し、処理を拒否しています。クライアントは、同じリクエストをそのまま繰り返すべきではありません。
多くのサーバーは、より具体的な専用のコードがある問題にも 400 を使います。たとえば nginx は、ヘッダーがバッファーの容量を超えると「400 Bad Request: Request Header Or Cookie Too Large」と返しますが、本来は 431 のほうが正確です。また多くの API は、422 が適したバリデーションエラーにも 400 を返します。
実際の原因を知るには、たいていレスポンスボディを見るのがいちばんの近道です。
レスポンス例
HTTP/1.1 400 Bad Request
Date: Fri, 06 Nov 2026 10:15:32 GMT
Server: nginx
Content-Type: text/html
Content-Length: 217
Connection: close
<html>
<head><title>400 Request Header Or Cookie Too Large</title></head>
<body>
<center><h1>400 Bad Request</h1></center>
<center>Request Header Or Cookie Too Large</center>
<hr><center>nginx</center>
</body>
</html> SEO とリダイレクトチェック
検索エンジンは 400 をほかの 4xx エラーと同様に扱います。その URL はインデックスされず、インデックス済みの URL が 400 を返すようになると、インデックスから削除されます。クローラーが送るのは Cookie なしの小さな標準的なリクエストなので、クローラーだけが 400 を受け取る場合は、たいてい URL に含まれる特殊な文字やファイアウォールのルールが原因です。リダイレクトチェックでチェーンの途中に 400 がある場合は、文字が二重にエンコードされていたりクエリ文字列が壊れていたりと、リダイレクトによって不正な URL が生成されていることがよくあります。
よくある原因と主な用途
- Cookie の数が多すぎるか、サイズが大きすぎる場合。サイトの Cookie を削除するか、nginx の
large_client_header_buffersを増やしてください。 - エンコードされていないスペース、壊れたパーセントエンコーディング、無効な
Hostヘッダーなど、URL の形式が不正な場合。 - API リクエストの JSON が無効であるか、必須パラメーターが欠けている場合。
- HTTPS のポートに平文の HTTP リクエストが送られた場合。nginx はこれを「The plain HTTP request was sent to HTTPS port」と報告します。