1

Hostget リクエストを Web サイトに送信する前に、ヘッダーを変更しようとしています。私はこのコードを使用してそれを行います:

IdHTTP1.Request.HOST := 'example.com';
memo1.Text := IdHTTP1.Get('http://stackoverflow.com');
showmessage(IdHTTP1.Request.Host); // Expected to be example.com but it's stackoverflow.com 

ここで大きな問題が発生しました。HostURLを取得する前にHostヘッダーを変更しても、ヘッダーはstackoverflow.com再び変更されます。私は何を間違っていますか?リクエストヘッダーを に変更したいexample.com

ありがとう

4

2 に答える 2

5

Host残念ながら、 URL で指定されたものとは異なるホスト名を指定するカスタム ヘッダーを指定するオプションはありません。URL優先です。Request.Hostまたは で指定しRequest.CustomHeadersたホスト名は、URL のホスト名によって上書きされます。

URL のホスト名が DNS に登録されていない場合、どのWeb ブラウザでも、または を含むほとんどの HTTP ライブラリでもアクセスできませんTIdHTTP。HTTP プロトコル自体がHostヘッダーの動作を定義しますが、現在の Web ブラウザ テクノロジは URL からのホスト名を使用しており、TIdHTTP. そのため、そもそも DNS に登録されていないホスト名を使用する Web サイトを持つことは意味がありません。ほとんどの最新のクライアント システムではホスト名を取得できないためです。URL のホスト名を IP アドレスに変換するには DNS が必要で、同じホスト名がHostヘッダーに挿入されます。

于 2014-10-26T17:29:10.477 に答える