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.

Ähnliche Artikel