Zgodnie z udokumentowanymi zasadami proxy środowiskowego HttpClient, example.internal i .example.internal dopasowują się odmiennie. Czysta nazwa wybiera host nadrzędny; forma z wiodącą kropką wybiera jego subdomeny.

Jeśli oba mają iść bezpośrednio, uwzględnij oba w środowisku startowym:

export no_proxy='example.internal,.example.internal'

Scal je z zamierzoną istniejącą listą wyjątków. W systemach, w których nazwy zmiennych rozróżniają wielkość liter, .NET najpierw sprawdza zmienne proxy zapisane małymi literami, a potem dużymi, więc nieaktualny no_proxy może mieć pierwszeństwo przed NO_PROXY.

Wewnątrz aplikacji domyślny selektor można sprawdzić bez wysyłania żądania HTTP do celu:

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)}");
}

Fragment używa System i System.Net.Http. Jeśli aplikacja jawnie podała inny IWebProxy, sprawdź zamiast tego rzeczywisty serwer proxy programu obsługującego. Ustaw zamierzone środowisko, zanim zostanie zainicjowany domyślny serwer proxy.

To są udokumentowane reguły .NET. Wynik curl z tym samym ciągiem nie dowodzi, że inny klient wybrał tę samą trasę, a decyzja o obejściu nadal wymaga bezpośredniej osiągalności sieciowej.

Powiązane artykuły