「400エラーが出て画面が開けない…」と困った経験はないでしょうか。
ウェブサイトを閲覧中やAPIを利用中に突然表示される400エラーは、多くの人が一度は遭遇したことがあるエラーメッセージです。
本記事では、400エラーの意味・原因・解決策をわかりやすく解説します。
HTTPステータスコードの基本から、Bad Requestエラーが発生する具体的な原因、対処法まで幅広くカバーしていますので、ぜひ最後までお読みください。
400エラーとは「Bad Request(不正なリクエスト)」を意味するHTTPステータスコードです
それではまず、400エラーの意味と基本的な定義からお伝えしていきます。
400 Bad Request:クライアント(ブラウザ・アプリ)からサーバーへのリクエストが不正・無効であることを示すHTTPステータスコード
HTTPステータスコードとは、ウェブサーバーがリクエストに対して返す3桁の数字のコードであり、通信の結果を示す標準的な仕組みです。
400番台のエラーは「クライアントエラー」と呼ばれ、問題がリクエストを送った側(ブラウザやアプリ)にあることを意味します。
400エラーは「リクエストの内容が正しくないため、サーバーが処理を拒否した」状態であり、サーバー自体の問題ではありません。
HTTPステータスコードの体系を理解する
400エラーをより深く理解するために、HTTPステータスコード全体の体系を確認しておきましょう。
| コード範囲 | 種類 | 代表例 |
|---|---|---|
| 100〜199 | 情報レスポンス | 100 Continue |
| 200〜299 | 成功レスポンス | 200 OK、201 Created |
| 300〜399 | リダイレクト | 301 Moved Permanently、302 Found |
| 400〜499 | クライアントエラー | 400 Bad Request、403 Forbidden、404 Not Found |
| 500〜599 | サーバーエラー | 500 Internal Server Error、503 Service Unavailable |
400番台はすべてクライアント側の問題を示し、リクエストを送った側が修正を行うことで解決できるケースがほとんどです。
400エラーと404エラーの違い
400エラーと混同されやすい404エラーとの違いを整理しておきましょう。
404エラーは「ページが見つからない(Not Found)」を意味し、存在しないURLにアクセスした際に発生します。
一方400エラーは「リクエストの形式・内容が不正」を意味し、URLは存在していてもリクエストの内容に問題がある場合に発生します。
404は「どこにあるか」の問題、400は「何を送ったか」の問題と覚えると区別しやすいでしょう。
400エラーが発生する主な状況
400エラーが発生する状況はいくつかのパターンに分類できます。
URLに不正な文字が含まれている、Cookieのデータが破損・期限切れになっている、送信フォームのデータ形式が不正、APIへのリクエストパラメータが不正・欠落しているなどが代表的な原因です。
また、ブラウザのキャッシュやCookieが古くなっていることで発生するケースも多く見られます。
400エラーが発生する具体的な原因を詳しく確認していきます
続いては、400エラーが発生する原因をより具体的に確認していきます。
原因を正確に理解することで、適切な解決策を選べるようになります。
URLの誤りや不正な文字
URLに入力ミスや不正な文字が含まれている場合、400エラーが発生することがあります。
例えば全角文字・特殊記号・スペースが含まれるURLをそのまま入力した場合や、URLエンコードが必要な文字が未エンコードのままリクエストされた場合などがこれにあたります。
特にコピー&ペーストで取得したURLに目に見えない特殊文字が混入しているケースもあるため、URLをそのままブラウザに貼り付けた際のエンコード処理を確認することが重要です。
Cookieの破損・期限切れ・サイズ超過
Cookieに関連する問題も400エラーの主要な原因のひとつです。
Cookieが破損していたり、保存期限が切れていたり、または特定のサイトで許容量を超えたCookieが保存されていると、リクエスト時にサーバーが正常に処理できずにエラーとなることがあります。
ブラウザに保存されているCookieをクリアすることで解決するケースが多く見られます。
フォームデータ・APIリクエストの不正
ウェブフォームへの入力や、APIに送信するデータの形式・内容が不正な場合にも400エラーが発生します。
必須パラメータの欠落、データ型の不一致(文字列が必要なフィールドに数字を送るなど)、JSONの構文エラー、ファイルサイズや形式の制限超過などが具体的な原因として挙げられます。
開発者がAPIを実装する際には、バリデーション(入力値の検証)を適切に実装することが400エラーの防止につながります。
セッションの期限切れ・認証情報の不整合
ログインセッションが期限切れになった状態でリクエストを送ると、400エラーが発生するサービスがあります。
また、認証トークンの形式が不正であったり、CSRFトークン(クロスサイトリクエストフォージェリ対策)が無効になっていたりする場合にもエラーが発生します。
この場合は一度ログアウトして再ログインすることで解決するケースがほとんどです。
400エラーのメッセージバリエーションと意味の違いを解説します
続いては、400エラーに関連して表示されることがある様々なメッセージの意味と違いを確認していきます。
「400 Bad Request」の標準的な意味
最も一般的な「400 Bad Request」は、サーバーがリクエストを理解できない・処理できないという広い意味を持ちます。
RFC 7231では「クライアントが送ったリクエストがサーバーには理解できないほど不正なものである」と定義されています。
表示されるメッセージはサーバーの実装によって異なり、「Bad Request」のほかに「400 Error」「HTTP Error 400」などのバリエーションが存在します。
サービス・プラットフォームごとの400エラーの表示例
| プラットフォーム・サービス | 400エラーの表示例 |
|---|---|
| Google Chrome | 「400. That’s an error.」 |
| Nginx | 「400 Bad Request」 |
| Apache | 「Bad Request Your browser sent a request that this server could not understand.」 |
| IIS(Windows Server) | 「HTTP Error 400 – Bad Request」 |
| 各種API | JSONでエラー詳細を返すことが多い |
エラーページのデザインや文言はサービスによって異なりますが、意味するところはすべて同じです。
400エラーのサブコードと詳細エラーメッセージ
Microsoftのサービスなど一部のプラットフォームでは、400エラーにサブコードを付加してより詳細な原因を示すことがあります。
例えば「400.1 Invalid Destination Header」「400.2 Invalid Depth Header」のような形式で、何が不正だったかを具体的に教えてくれる場合があります。
これらの詳細情報はトラブルシューティングの際に非常に有用であり、エラーページに表示されるサブコードや詳細メッセージを必ず確認する習慣をつけることが重要です。
400エラーを確認・調査するための開発ツールの使い方を解説します
続いては、400エラーが発生した際に原因を調査するための開発者ツールの活用方法を確認していきます。
ブラウザの開発者ツール(DevTools)での確認方法
400エラーの原因を詳しく調べるには、ブラウザの開発者ツール(DevTools)が非常に役立ちます。
Chromeの場合はF12キーまたは右クリック→「検証」で開き、「Network(ネットワーク)」タブを選択します。
エラーが発生しているリクエストをクリックすると、送信したリクエストの内容(Headers・Payload)とサーバーからのレスポンス(Response)を詳細に確認できます。
400エラーのレスポンスボディには原因のヒントが含まれていることが多いため、Responseタブの内容を必ず確認しましょう。
APIテストツール(Postman・cURL)での確認
APIの開発・テストを行う際には、PostmanやcURLなどのツールを使って400エラーの原因を切り分けることができます。
Postmanでは送信するリクエストのヘッダー・パラメータ・ボディを細かく設定し直すことで、どの要素が問題を引き起こしているかを特定できます。
cURLはコマンドライン上でHTTPリクエストを送信できるツールで、シェルスクリプトやCI/CD環境でのデバッグに広く活用されています。
サーバーログでの詳細確認
サーバー管理者やエンジニアの場合は、サーバーのアクセスログやエラーログを確認することで400エラーの詳細な原因を特定できます。
NginxやApacheのエラーログには、どのリクエストがどのような理由で400エラーになったかが記録されています。
ログの確認には適切なサーバーアクセス権限が必要ですが、ログベースのデバッグは最も正確に原因を特定できる手段のひとつです。
まとめ
本記事では、400エラーの意味と基本から、具体的な発生原因、エラーメッセージのバリエーション、開発者ツールを使った調査方法まで幅広く解説しました。
改めてポイントをお伝えすると、400エラー(Bad Request)はクライアント側のリクエストに問題があることを示すHTTPステータスコードです。
URLの誤り、Cookieの破損、フォームデータの不正、認証情報の問題などが主な原因として挙げられます。
エラーが発生した際は焦らず、ブラウザの開発者ツールやログを活用して原因を特定し、適切な対処を行うことが解決への最短ルートとなるでしょう。