HTTPリクエストを送信する際、Hostヘッダーはリクエスト先のサーバを特定するために非常に重要です。サーバは、このHostヘッダーを見て、どのドメインに対するリクエストかを判断します。このため、Hostヘッダーがリクエスト先のサーバのドメインやポートと一致しない場合、サーバ側でリクエストを処理できないことがあり、その結果としてリダイレクト(301 Moved Permanently)が発生する場合があります。
あなたのケースでは、次のようなことが考えられます。
1. Hostヘッダーが送信先のサーバと一致していなかった理由
HTTPリクエストのHostヘッダーが送信先のドメインやポートと異なっている場合、サーバはそのリクエストがどのバーチャルホストに対して行われたのかを正しく判断できません。多くのウェブサーバ(Apache、NGINXなど)は、複数のドメインを1つのIPアドレスでホスティングすることができ、Hostヘッダーを使用して正しいリソースを選択します。Hostが誤っていると、サーバは期待するリソースにリダイレクトするために301を返すことがあります。
2. Hostヘッダーを削除または正しいものに変更した場合の動作
削除した場合:
Hostヘッダーがない場合、多くのサーバはデフォルトのホスト(通常はサーバ自体のデフォルト設定)で処理を試みますが、これは正しいリソースに到達することができないため、異なるリソースが返される可能性があります。ただし、サーバによっては、この処理が問題なく成功する場合もあります。
正しいHostを設定した場合:
Hostヘッダーを正しい送信先のサーバのドメインとポートに設定すると、サーバはそのドメインに対するリクエストとして正しく解釈でき、正しいリソースを返すことができます。このため、問題なく接続できたのでしょう。
301リダイレクトについて
301 Moved Permanentlyは、リソースが恒久的に別のURLに移動したことを示すステータスコードです。サーバは、リクエストされたリソースが新しい場所にあることをクライアントに伝えるために、Locationヘッダーを使って新しいURLを通知します。正しいHostが指定されていないと、サーバはリクエストを別のホストやURLにリダイレクトしようとすることがあります。
まとめ
Hostヘッダーが送信先のサーバのドメインやポートと一致しなかった場合、サーバはリクエストを正しく処理できず、リダイレクトやエラーが発生します。
正しいHostを指定するか、不要な場合には削除することで問題が解決されますが、Hostヘッダーが欠落している場合も一部のサーバはリクエストを処理できることがあります。
この挙動は、サーバの設定やアプリケーションの動作に依存する場合もあります。