ชื่อโฮสต์พร็อกซีอาจมีอักขระสากลในรูปแบบที่แสดงผล ไคลเอนต์หรือตัวแก้ไขที่คาดหวังรูปแบบ IDNA ASCII ต้องให้ชื่อโฮสต์นั้นถูกแปลง ไม่ใช่สำเนา URL ทั้งหมดที่ escape แบบเปอร์เซ็นต์ตามอำเภอใจ

ใน PowerShell นั้น .NET เปิดเผยการแปลงโดยตรง:

$mapping = New-Object System.Globalization.IdnMapping
$asciiHost = $mapping.GetAscii($unicodeProxyHost)
$endpoint = New-Object System.UriBuilder
$endpoint.Scheme = 'http'
$endpoint.Host = $asciiHost
$endpoint.Port = 8080

$proxy = New-Object System.Net.WebProxy($endpoint.Uri)

unicodeProxyHost เป็นเพียงชื่อโดเมน พอร์ตและสคีมยังแยกจากกัน ใช้พร็อกซีที่ได้กับไคลเอนต์ HTTP ที่ส่งคำขอ

สำหรับ Uri ที่แยกวิเคราะห์แล้ว IdnHost จะเปิดเผยการแสดงชื่อโฮสต์ที่เข้ากันได้กับ IDNA ตรวจสอบปลายทางดั้งเดิมแทนการเข้ารหัสป้ายกำกับที่เข้ารหัสแล้วซ้ำๆ

แยกชื่อโฮสต์ของพร็อกซีออกจากชื่อโฮสต์ของปลายทางในข้อผิดพลาดการแก้ไข การแปลงอันหนึ่งไม่ได้แก้ไขการสะกดผิดหรือระเบียน DNS ที่หายไปของอีกอัน เก็บชื่อโฮสต์ที่ตั้งใจไว้สำหรับข้อมูลระบุตัวตนของใบรับรองด้วย การแทนที่ด้วยที่อยู่ IP ตามอำเภอใจจะเปลี่ยนส่วนอื่นของการเชื่อมต่อ

บทความที่เกี่ยวข้อง