Un nome host proxy può contenere caratteri internazionali nella sua forma visualizzata. Un client o resolver che si aspetta la forma IDNA ASCII ha bisogno che quel nome host venga convertito, non di una copia arbitraria con escape percentuale dell'intero URL.

In PowerShell, .NET espone la conversione direttamente:

$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 è solo il nome di dominio. La porta e lo schema restano separati. Usa il proxy risultante nel client HTTP che effettua la richiesta.

Per un Uri già analizzato, IdnHost espone la sua rappresentazione del nome host compatibile con IDNA. Esamina l'endpoint originale invece di codificare ripetutamente un'etichetta già codificata.

Distingui il nome host del proxy da quello della destinazione in un errore di risoluzione. Convertirne uno non corregge un errore di battitura o un record DNS mancante sull'altro. Conserva il nome host previsto anche per l'identità del certificato; sostituirlo con un indirizzo IP arbitrario cambia un'altra parte della connessione.

Articoli correlati