การผูก IPv6 และ IPVersion ขาออกในพร็อกซี HTTP ของ Indy
เพิ่มการผูก 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 ก่อนไคลเอนต์นั้นเชื่อมต่อ ให้สอดคล้องกับเส้นทางปลายทางที่ตั้งใจไว้
แยกความล้มเหลวของตัวรับฟังออกจากความล้มเหลวของฮอปถัดไปเมื่อฝั่งหนึ่งทำงาน การพึ่งพาการผูกอัตโนมัติอาจนำสมมติฐานที่ขึ้นกับแพลตฟอร์มเข้ามาในการเปรียบเทียบ