Праверка правілаў NO_PROXY у .NET з дапамогай HttpClient.DefaultProxy.IsBypassed
Пералічыце і голы дамен, і форму з кропкай наперадзе, калі HttpClient павінен абыходзіць проксі для абодвух, потым праверце IsBypassed.
Паводле дакументаванай палітыкі асяроддзевага проксі HttpClient, example.internal і .example.internal супадаюць па-рознаму. Голае імя выбірае бацькоўскі хост; форма з кропкай наперадзе выбірае яго паддамены.
Калі абодва павінны ісці напроста, уключыце абодва ў асяроддзе запуску:
export no_proxy='example.internal,.example.internal'
Аб'яднайце гэта з меркаваным існуючым спісам абыходу. На сістэмах, дзе імёны зменных адрозніваюць рэгістр, .NET спачатку правярае праксі-зменныя ў ніжнім рэгістры, а потым у верхнім, таму састарэлы no_proxy можа мець перавагу над NO_PROXY.
Усярэдзіне праграмы селектар па змаўчанні можна праверыць, не адпраўляючы HTTP-запыт да пункта прызначэння:
foreach (var host in new[] {
"example.internal", "api.example.internal", "other.internal"
})
{
var uri = new Uri("https://" + host + "/");
Console.WriteLine($"{host}: bypass={HttpClient.DefaultProxy.IsBypassed(uri)}");
}
Фрагмент выкарыстоўвае System і System.Net.Http. Калі праграма відавочна падала іншы IWebProxy, правярайце фактычны проксі апрацоўшчыка. Задайце патрэбнае асяроддзе да ініцыялізацыі проксі па змаўчанні.
Гэта дакументаваныя правілы .NET. Вынік curl з той жа радком не даказвае, што іншы кліент выбраў той жа маршрут, а рашэнне аб абыходзе ўсё яшчэ патрабуе прамой сеткавай дасяжнасці.