Според документираната политика за прокси от средата на 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 със същия низ не доказва, че друг клиент е избрал същия маршрут, а решението за заобикаляне все още изисква пряка мрежова достъпност.

Подобни статии