421エラー(Misdirected Request)とは?意味をわかりやすく簡単に解説
公開:
421エラー(Misdirected Request)とは
421エラーはHTTPステータスコードの一種で、クライアントからのリクエストが接続先のサーバーに対して、適切に向けられていない場合に返されるエラーです。このエラーはHTTP/2やHTTP/3などの新しいプロトコルにおいて、複数のホスト名が同一のIPアドレスを共有する環境で発生します。
サーバーは受信したリクエストのホスト名やTLS証明書の情報を確認し、自身が処理できないリクエストであると判断した際に、421エラーを返却します。クライアントはこのエラーを受け取ると、別のコネクションを使用してリクエストを再送信することが推奨されており、適切な接続先への再ルーティングが可能です。
HTTP/2における421エラーの発生条件
HTTP/2では、コネクションの再利用機能により、一度確立した接続を複数のリクエストで共有することが可能ですが、これが421エラーの主な発生原因となります。サーバーは、接続時に提示されたTLS証明書に含まれていないホスト名へのリクエストを受信した場合、そのリクエストを処理できないと判断します。
| 発生条件 | 詳細内容 |
|---|---|
| 証明書の不一致 | リクエストのホスト名が証明書のSANに含まれない |
| コネクション再利用 | 異なるドメインへのリクエストで同一接続を使用 |
| サーバー設定 | バーチャルホストの設定と要求が不一致 |
クライアント側では、このエラーを受信した後、新しいコネクションを確立してリクエストを再試行する必要があり、自動的な再送信処理が実装されていることが一般的です。多くのブラウザやHTTPクライアントライブラリは、421エラーを検出すると透過的に再接続を行うため、エンドユーザーがエラーを意識することは稀となっています。
421エラーのレスポンス実装例
サーバー側で421エラーを返す実装は、使用するWebサーバーソフトウェアやプログラミング言語によって異なりますが、基本的な構造は共通しています。レスポンスにはステータスコード421とともに、適切なヘッダー情報を含めることが推奨されており、クライアントが次のアクションを判断できるようにします。
HTTP/2 421 Misdirected Request
Content-Type: text/html; charset=UTF-8
Content-Length: 87
<html>
<body>
<h1>421 Misdirected Request</h1>
<p>Request was directed at wrong server</p>
</body>
</html>
実装時には、サーバーがリクエストのホスト名を検証し、処理可能かどうかを判定するロジックを組み込む必要があります。Nginxではssl_reject_handshakeディレクティブを使用し、Apacheではmod_http2モジュールの設定を調整することで、適切な421エラーレスポンスの生成が実現できます。
※上記コンテンツの内容やソースコードはAIで確認・デバッグしておりますが、間違いやエラー、脆弱性などがある場合は、コメントよりご報告いただけますと幸いです。
左へフリックで次のページ、右へフリックで前のページに戻れます左右の矢印ボタン、左右のスワイプで移動できます





