המרת שם מארח של פרוקסי ל-IDNA ASCII ב-PowerShell
המר שם תחום בין-לאומי לצורת IDNA ASCII שלו כאשר הצרכן של נקודת קצה של פרוקסי אינו יכול לפתור את שם המארח ב-Unicode.
שם מארח של פרוקסי עשוי להכיל תווים בין-לאומיים בצורה המוצגת שלו. לקוח או פותר שמצפה לצורת IDNA ASCII זקוק לשם המארח הזה מומר, ולא לעותק שרירותי עם בריחת אחוזים של כל כתובת ה-URL.
ב-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 שרירותית משנה חלק אחר של החיבור.