IPv6 обвързвания и изходящ IPVersion в Indy HTTP прокси
Добавете явни локални обвързвания IPv4/IPv6 преди активиране; изберете нужното семейство за следващ хоп в OutboundClient, преди той да се свърже.
ProxyServer.Bindings.Clear;
with ProxyServer.Bindings.Add do
begin
IPVersion := Id_IPv4;
IP := '127.0.0.1';
Port := 8080;
end;
with ProxyServer.Bindings.Add do
begin
IPVersion := Id_IPv6;
IP := '::1';
Port := 8080;
end;Приложете това към неактивния съществуващ TIdHTTPProxyServer, след което използвайте нормалното му активиране. Loopback адресите умишлено приемат само локални клиенти; отдалечената употреба изисква достъпни адреси на интерфейси и контрол на достъпа. Проверете получената граница на достъп преди да изложите този слушател.
Входящите обвързвания и изходящият сокет изпълняват различни задачи:
| Сокет | Избор на семейство |
|---|---|
| Клиентът достига проксито | Всеки явен запис в Bindings |
| Проксито достига следващия хоп | OutboundClient.IPVersion на контекста |
Затова IPv6 слушател не принуждава всяка дестинация към IPv6. Ако натоварването изисква явно семейство за следващия хоп, задайте го в OnHTTPBeforeCommand преди този клиент да се свърже, в съответствие с предвидения път до дестинацията.
Отделяйте отказа на слушателя от отказа на следващия хоп, когато едната страна работи. Разчитането на автоматични обвързвания иначе може да внесе в сравнението допускания, зависещи от платформата.