Імя хоста проксі можа змяшчаць міжнародныя сімвалы ў адлюстраванай форме. Кліент або рэзалвер, які чакае форму 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-адрасам змяняе іншую частку злучэння.

Падобныя артыкулы