IPv6-bindningar och utgående IPVersion i Indy HTTP-proxy
Lägg till explicita lokala IPv4/IPv6-bindningar före aktivering; välj den nödvändiga nästa hopp-familjen på OutboundClient innan den ansluter.
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;Tillämpa detta på den inaktiva befintliga TIdHTTPProxyServer, använd sedan dess normala aktivering. Loopback-adresserna accepterar medvetet endast lokala klienter; fjärranvändning kräver nåbara gränssnittsadresser och åtkomstkontroller. Verifiera den resulterande åtkomstgränsen innan du exponerar den lyssnaren.
De inkommande bindningarna och den utgående socketen utför olika uppgifter:
| Socket | Familjeval |
|---|---|
| Klienten når proxyn | Varje explicit Bindings-post |
| Proxyn når nästa hopp | Kontextens OutboundClient.IPVersion |
En IPv6-lyssnare tvingar därför inte varje destination till IPv6. Om arbetsbelastningen kräver en explicit nästa hopp-familj, ange den i OnHTTPBeforeCommand innan den klienten ansluter, i linje med den avsedda destinationsvägen.
Skilj lyssnarfel från nästa hopp-fel när ena sidan fungerar. Att förlita sig på automatiska bindningar kan annars föra in plattformsberoende antaganden i jämförelsen.