По умолчанию TIdHTTP
использует хост: порт, который указывается / выводится по запрашиваемому URL-адресу.Чтобы изменить это поведение, вам придется изменить исходный код TIdHTTP
, например, в методе TIdCustomHTTP.SetHostAndPort()
или TIdCustomHTTP.CheckAndConnect()
(который не является virtual
), а затем перекомпилировать Indy.
В качестве альтернативы, вы можете использовать TIdHTTP
'OnSocketAllocated
или On(Before|After)Bind
событие (которые не повышаются до published
в TIdHTTP
, поэтому вам придется обращаться к ним вручную во время выполнения), чтобы изменить TIdHTTP.IOHandler.Host
свойство любого IP-адреса, к которому вы хотите подключиться.Это не повлияет на заголовки HTTP, которые отправляет TIdHTTP
, например, Host
, которые все равно будут взяты из URL.
В качестве альтернативы, если вы хотите, чтобы все Indy's Host-to-IPDNS-запросы для прохождения через Cloudflare, вы можете получить собственный класс из TIdStack
(или любого интересующего вас платформенного потомка, такого как TIdStackWindows
), переопределить его виртуальный метод HostByName()
для выполнения любого DNS-запроса, который вы хотитеи затем перед тем, как будут созданы какие-либо классы Indy, передайте тип вашего класса функции SetStackClass()
в модуле IdStack
.