3 つの仮想ホストが提供される Web サーバーを考えてみましょう。
- mysite.com
- myothersite.com
- imnotcreative.com
ここで、サーバーが次の生のリクエスト メッセージを受信するとします (コードの書式設定により終了\r\n
シーケンスが削除されます)。
GET / HTTP/1.1
Host: nothostedhere.com
RFC 2616 には、現在のサーバーに存在しないホスト名の要求に応答する方法についてのガイダンスがありません (おそらく見逃したのでしょうか?)。たとえば、Apache は、その構成で定義された最初の仮想ホストを単に「プライマリ ホスト」として使用し、クライアントがそのホストを要求したふりをします。明らかに、これは応答を返すよりも堅牢で400 Bad Request
あり、クライアントが常に何らかの表現を見ることが保証されます。
だから私の質問は...
400
HTTP/1.1 プロトコルを使用しているときに、クライアントが存在しないホストを要求した場合に、(または他のエラー コード) で応答することを思いとどまらせるために、「堅牢性と正確性」の議論以外に理由を提供できますか?
すべての HTTP/1.1 リクエストは、RFC 2616 に従ってヘッダーを指定しなければならないHost:
ことに注意してください。HTTP/1.0 リクエストの場合、唯一の実際のオプションは、「プライマリ」ホストの結果を提供することです。この質問は、特に HTTP/1.1 プロトコル リクエストに対応しています。