Ligações IPv6 e IPVersion de saída no proxy HTTP do Indy
Adicione ligações locais IPv4/IPv6 explícitas antes da ativação; escolha a família de próximo salto necessária em OutboundClient antes de ele se conectar.
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;Aplique isto ao TIdHTTPProxyServer existente e inativo e depois use a sua ativação normal. Os endereços loopback aceitam deliberadamente apenas clientes locais; o uso remoto exige endereços de interface alcançáveis e controlos de acesso. Verifique a fronteira de acesso resultante antes de expor esse ouvinte.
As ligações de entrada e o socket de saída desempenham tarefas diferentes:
| Socket | Seleção de família |
|---|---|
| O cliente chega ao proxy | Cada entrada explícita de Bindings |
| O proxy chega ao próximo salto | O OutboundClient.IPVersion do contexto |
Um ouvinte IPv6, portanto, não força cada destino a IPv6. Se a carga de trabalho exigir uma família de próximo salto explícita, defina-a em OnHTTPBeforeCommand antes de esse cliente se conectar, de acordo com o caminho de destino pretendido.
Separe a falha do ouvinte da falha do próximo salto quando um lado funciona. Confiar em ligações automáticas pode, de outra forma, introduzir pressupostos dependentes da plataforma na comparação.