ウェブサイトで突然読み込みエラーが発生したら、誰でもイライラしてしまうもの。そんな頭痛の種を和らげるために、エラーの原因を特定して、解決する方法は知っておいて損はありません。
今回の記事では、主にクライアント側のリクエストに問題があるときに発生する400番台のエラーの中から、「HTTP 400 Bad Reques」エラーについて見ていきます。このエラーの意味と原因、そして解決方法を詳しく掘り下げていきましょう。
HTTP 400エラーの解決方法について、動画での解説もご用意しています。
「HTTP 400 Bad Request」エラーとは
400エラーやHTTP 400エラーとも呼ばれる「HTTP 400 Bad Request」エラーは、クライアント側の一般的なエラーと認識され、他のどのステータスコードにも該当しないとサーバーが判断した場合に返されるエラーです。
このエラーは、サーバーで処理される前からクライアント側のリクエストに問題があることを示唆します。
Internet Engineering Task Force(IETF)では、HTTP 400エラーは以下のように定義されています。
400(Bad Request)ステータスコードは、クライアント側の問題(不正なリクエスト構文、無効なリクエストメッセージのフレーミング、不正なリクエストルーティングなど)が原因でサーバーがリクエストを処理できない、または処理を拒否することを示す(英語原文の日本語訳)
エラーコード | 400 Bad Request |
エラーの種類 | クライアントサイド |
エラーメッセージの例 | HTTP Error 400 HTTP Error 400 – Bad Request HTTP Status 400 – Bad Request HTTP Error 400. The request hostname is invalid 400 Bad Request 400 Bad Request. Request Header Or Cookie Too Large Bad Request – Error 400 Bad Request – Invalid URL |
エラーの原因 | URLの構文エラー ブラウザキャッシュとCookieの破損 DNSキャッシュ ファイルサイズが大きすぎる 一般的なサーバーエラー |
「HTTP 400 Bad Request」エラーの原因
HTTP 400エラーの原因はさまざまです。また、特定のブラウザやOSに特有のものではなくても、解決方法はその原因によって若干異なります。
1. URLの構文エラー
URLに誤りがあったり、不正な文字が含まれていると、HTTP 400エラーを引き起こすことがあります。
このようなミスは意外と一般的で、URLのエンコードが誤っているとよく起こります。例えば、以下のURLにはサーバーが処理できない文字が含まれています。
https://twitter.com/share?lang=en&text=Example%20of%20malformed%%20characters%20in%20URL
問題となるのは、「malformed」の直後にある「%」の重複。%%20ではなく「%20」が正解です。
このような不正な文字は、400エラーの原因になります。同様に、以下のURLには「{」が含まれており、これも不正な文字と見なされます。
https://twitter.com/share?lang=en&text=Example%20of%20malformed{%20characters%20in%20URL
2. ブラウザキャッシュとCookieの破損
URLが正しくても、ブラウザキャッシュのファイルの破損や、Cookieの保存期間切れまたは破損などが原因になることもあります。
例えば、WordPressの管理画面にログイン後、またしばらくして管理画面にアクセスしようとしたら、400エラーが発生したという経験はありませんか?これは、ログイン認証データを扱うCookieが破損し、管理者権限を持つユーザーとして認証されなくなってしまうためです。この結果、接続が拒否されてエラーが発生します。
3. DNSキャッシュ
あるいは、ローカルに保存されているDNSデータが、設定されているDNS情報と同期していないことも考えられます。
ドメインは、IPアドレスのエイリアスであり、IPアドレスは、接続したい特定のサーバーを呼び出す電話番号のような役割を担います。サイトに初めて訪れると、名前解決(ドメイン名に対応するサーバーの特定のIPアドレスを調べる)と呼ばれる検索処理が行われます。
読み込みの高速化を考慮し、この処理を次回以降行わなくて済むよう、詳細がコンピュータのローカルDNSキャッシュに保存されます。この仕組みは、HTML、CSS、JavaScript、メディアなどに対するブラウザのキャッシュと考えるとわかりやすいです。
4. ファイルサイズが大きすぎる
アップロード制限を超える大きなファイルをサイトにアップロードしようとした時にも、400エラーが発生することがあります。これについては、設定されたサーバーのファイルサイズ制限が関係してきます。
ここまでが、クライアント側の問題です。
5. 一般的なサーバーエラー
HTTP 400エラーは、稀にサーバー側の問題を示していることもあります。具体的には、サーバーの一般的な問題、不具合、あるいは不特定多数の一時的な問題など。
他の人のウェブサイトにアクセスしようとしてこのエラーが発生した場合、残念ながら手の施しようはありません。定期的にブラウザを更新してサイトを訪れつつ、サイト運営者がトラブルシューティングを行うことを待つしかありません。
このエラーがサーバー側の問題に起因しているかどうかを見極めるには、別のブラウザでサイトを開いてみてください。システム固有の問題を排除するために、別のマシン/デバイスで開いてみるのも有効です。
別のブラウザ、コンピュータ、OS、デバイスを使用してもサイトにアクセスできない場合は、サーバー側のエラーである可能性が高いです。可能であれば、サイト運営者に問題を報告し、エラー発生時に使用していたOS、ブラウザ、バージョンなどの情報を共有してみてください。
「HTTP 400 Bad Request」エラーの見え方(ブラウザ別)
HTTP 400エラーは、高確率でクライアント側の問題を示します。Chromeでは、以下のように表示されます。
以下、Chrome以外のブラウザでの表示もいくつか見てみましょう。
Firefox
Safari
Microsoft Edge
このように、どのブラウザでもエラー解決の手がかりとなるようなメッセージは表示されず、自分で解決策を探るのは困難です。FirefoxとSafariに至っては、ウィンドウが真っ白になり、これが400エラーであるかどうかの判断すら難しいところです。
HTTP 400エラーの原因や見え方がわかったところで、次にこのエラーの解決方法を詳しく見ていきましょう。
400 Bad Request(用語集):
「400 Bad Request」は、不正な構文、無効なリクエストメッセージフレーミング、または不正なリクエストルーティングのために、サーバーがクライアントによって送信されたリクエストを処理できなかったことを示すHTTPステータスコードです。
「HTTP 400 Bad Request」エラーの解決方法
「HTTP 400 Bad Request」エラーを解決するために、以下順を追ってトラブルシューティングしていきます。
手順は以下の通りです。
なお、解決方法をご紹介する前の注意点として、これからご紹介する手順で、ローカルにキャッシュされたデータをクリアすることになります。
お使いのコンピュータに保存されたキャッシュをクリアすると、接続エラーを大幅に抑えられる可能性があります。
しかしその一方で、ファイルやデータをキャッシュするメリットもあり、ブラウザキャッシュを使用しなければ、ブラウジング体験に悪影響が出る可能性は否めません。例えば、エッジキャッシュを使用すると、ウェブページの配信速度をおよそ2倍高速化することができます。
したがって、サイトの最適化とユーザー体験の間で折り合いをつけなければなりません。サイト速度を最適化すれば、HTTP 400エラーなどの問題が予期せず発生するリスクがあるということは念頭に置いておきましょう。
1. 送信されたURLを確認する
まずは、URLから確認していきましょう。ブラウザにURLを手入力する際に、入力ミスが生じている可能性があります。
ドメイン名とアクセスしようとしているページが正しく入力されていること、また文字列がスラッシュ(/)で適切に区切られていることを確かめてください。特殊文字が含まれている場合は、正しくエンコードされていること、そしてURLに使用可能な文字であることの確認もお忘れなく。
長いURLであれば、オンラインURLエンコーダー/デコーダーを使用すると、URL内の不正な文字を自動検出することができて便利です。
URLが正しいことを確認したら、ブラウザで再度アクセスしてみてください。まだエラーが表示される場合は、次のステップに移りましょう。
2.ブラウザのキャッシュをクリアする
ローカルに保存されているウェブサイトのファイルが破損していると、HTTP 400エラーを引き起こすことがあります。
これには、サイトの実行に必要な以下すべてのファイルが含まれます。
- HTML
- JavaScript
- テキスト/設定ファイル
- CSS
- メディア(画像、動画、音声)
- データファイル(XML、JSON)
上記ファイルは、サイトに訪れると、ブラウザによってコンピュータに保存されます。
これに対するトラブルシューティングは、ブラウザキャッシュのクリアです。
Chromeの場合は、右上の縦三点リーダーをクリックし、メニューから「その他のツール」>「閲覧履歴を消去」を選択します。
表示される「閲覧履歴データの削除」ウィンドウで、「キャッシュされた画像とファイル」を選択し、「データを削除」をクリックします。
「期間」のドロップダウンメニューで期間を指定して、最近のファイルのみを削除することも可能ですが、破損しているファイルを確実に削除するため、「全期間」を選択して、すべてのファイルを削除することをお勧めします。
Chrome以外の主要ブラウザ(Mozilla Firefox、Safari、Microsoft Edge、Opera)でキャッシュをクリアする方法はこちらをご覧ください。
3. ブラウザのCookieを削除する
キャッシュをクリアしてもエラーが消えない場合には、Cookieも削除してみましょう。ひとつのウェブサイトで何十種類ものCookieが保存されていることがあり、そのうちひとつでも有効期限が切れていたり、破損していたりすると、400エラーの原因になり得ます。
ChromeでCookieを削除するには、先ほどと同様、縦三点リーダーをクリックして、「その他のツール」>「閲覧履歴を消去」に移動します。
「Cookieと他のサイトデータ」を選択して、「期間」は「全期間」に指定しましょう。これで、すべてのCookieが削除されます。
Cookieを削除したら、エラーが発生していたサイトに再度アクセスしてみてください。Cookieを使用しているサイトなら、Cookieの破損や期限切れが原因のエラーは一般的であり、これで解決する可能性があります。
Chrome以外の主要ブラウザでCookieを削除する方法はこちらをご覧ください。
4. サーバーのファイルアップロード制限
サーバーのアップロード制限を超える大きなファイルをサイトにアップロードしようとしても、400エラーが発生する可能性があります。
これにはまず、小さいファイルをアップロードしてみてください。問題なくアップロードできれば、最初にアップロードしようとしたファイルが大きすぎる可能性が高く、再度アップロードする前に何らかの方法でサイズを縮小してください。
ファイルの種類にもよりますが、画像、動画、音声ファイルを圧縮する方法は、オンラインで多数見つかるはずです。
5. DNSキャッシュをクリアする
HTTP 400エラーの原因として、ローカルのDNSキャッシュが破損している、または古いことも考えられます。
DNSデータは、ブラウザではなくオペレーティングシステムに保存されます。WindowsとmacOSのDNSキャッシュをクリアする方法はこちらをご覧ください。
6. ブラウザの拡張機能を無効にする
最後に、もしサイトのCookieに影響を与える拡張機能がブラウザにインストールされている場合は、これが原因になっている可能性もゼロではありません。一時的に拡張機能を無効化して、変化があるかどうかを確認するため、再度サイトにアクセスしてみてください。
この手順は、上記5つのトラブルシューティングを行なってもエラーが解決しない場合には、試す価値ありです。
まとめ
「HTTP 400 Bad Request」エラーには、いくつかのトラブルシューティング方法があります。
HTTP 400エラーは、ほとんどの場合、クライアント側のリクエストまたはローカルキャッシュに問題があることを意味します。今回の記事でご紹介した解決策は、最低限の知識さえあれば、誰でも簡単に実行できるものばかり。すぐにブラウジングを再開できるはずです。
しかし、時には一般的なサーバーの問題を示していることも。これを確かめるには、別のデバイスでサイトにアクセスしてみてください。サーバー側のエラーと予想される場合、残念ながら為す術はほとんどありません。サイト管理者にエラーを報告し、その後エラーが解決されるまで、定期的にサイトを訪れてみてください。