Sprawdzanie reguł NO_PROXY w .NET za pomocą HttpClient.DefaultProxy.IsBypassed
Podaj zarówno czystą domenę, jak i formę z wiodącą kropką, gdy HttpClient ma omijać serwer proxy dla obu, a następnie sprawdź IsBypassed.
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.