Ověření pravidel NO_PROXY v .NET pomocí HttpClient.DefaultProxy.IsBypassed
Uveďte holou doménu i formu s úvodní tečkou, když má HttpClient obejít proxy pro obě, a poté zkontrolujte IsBypassed.
Podle dokumentované politiky proxy z prostředí v HttpClient se example.internal a .example.internal shodují odlišně. Holé jméno vybírá nadřazený hostitel; forma s úvodní tečkou vybírá jeho subdomény.
Pokud mají obě jít přímo, zahrňte obě do prostředí při spuštění:
export no_proxy='example.internal,.example.internal'
Sloučte je se zamýšleným stávajícím seznamem výjimek. V systémech, kde jména proměnných rozlišují velikost písmen, .NET nejprve kontroluje proxy proměnné s malými písmeny a teprve potom s velkými, takže zastaralé no_proxy může mít přednost před NO_PROXY.
Uvnitř aplikace lze výchozí selektor zkontrolovat bez odeslání cílového požadavku 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)}");
}
Ukázka používá System a System.Net.Http. Pokud aplikace výslovně poskytla jiný IWebProxy, zkontrolujte místo toho skutečný proxy obslužné rutiny. Nastavte zamýšlené prostředí dříve, než se výchozí proxy inicializuje.
Toto jsou dokumentovaná pravidla .NET. Výsledek curl se stejným řetězcem nedokazuje, že jiný klient zvolil stejnou trasu, a rozhodnutí o obejití stále vyžaduje přímou síťovou dostupnost.