Преобразование имени хоста прокси в 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-адресом меняет другую часть соединения.