Einen Proxy-Hostnamen in PowerShell in IDNA-ASCII umwandeln
Wandeln Sie einen internationalisierten Domainnamen in seine IDNA-ASCII-Form um, wenn der Nutzer eines Proxy-Endpunkts den Unicode-Hostnamen nicht auflösen kann.
Ein Proxy-Hostname kann in seiner angezeigten Form internationale Zeichen enthalten. Ein Client oder Resolver, der die IDNA-ASCII-Form erwartet, benötigt diesen Hostnamen umgewandelt, nicht eine beliebige prozentkodierte Kopie der gesamten URL.
In PowerShell stellt .NET die Umwandlung direkt bereit:
$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 ist nur der Domainname. Port und Schema bleiben getrennt. Verwenden Sie den resultierenden Proxy im HTTP-Client, der die Anfrage stellt.
Für eine bereits geparste Uri stellt IdnHost ihre IDNA-kompatible Hostnamen-Darstellung bereit. Prüfen Sie den ursprünglichen Endpunkt, statt ein bereits kodiertes Label wiederholt zu kodieren.
Unterscheiden Sie in einem Auflösungsfehler den Hostnamen des Proxys vom Hostnamen des Ziels. Die Umwandlung des einen behebt weder einen Tippfehler noch einen fehlenden DNS-Eintrag beim anderen. Behalten Sie den beabsichtigten Hostnamen auch für die Zertifikatsidentität bei; ihn durch eine beliebige IP-Adresse zu ersetzen, ändert einen anderen Teil der Verbindung.