Vérifier les règles NO_PROXY de .NET avec HttpClient.DefaultProxy.IsBypassed
Indiquez à la fois le domaine nu et la forme avec point initial lorsque HttpClient doit contourner le proxy pour les deux, puis examinez IsBypassed.
Selon la politique de proxy d'environnement documentée de HttpClient, example.internal et .example.internal ne correspondent pas de la même façon. Le nom nu sélectionne l'hôte parent ; la forme avec point initial sélectionne ses sous-domaines.
Si les deux doivent passer en direct, incluez-les tous les deux dans l'environnement de démarrage :
export no_proxy='example.internal,.example.internal'
Fusionnez-les avec la liste d'exceptions existante que vous prévoyez. Sur les systèmes où les noms de variables distinguent majuscules et minuscules, .NET examine d'abord les variables de proxy en minuscules, puis celles en majuscules, si bien qu'un no_proxy obsolète peut primer sur NO_PROXY.
Dans l'application, le sélecteur par défaut peut être examiné sans envoyer la requête HTTP vers la destination :
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)}");
}
L'extrait utilise System et System.Net.Http. Si l'application a explicitement fourni un autre IWebProxy, examinez plutôt le proxy réel du gestionnaire. Définissez l'environnement souhaité avant l'initialisation du proxy par défaut.
Ce sont les règles documentées de .NET. Un résultat curl avec la même chaîne ne prouve pas qu'un autre client a choisi la même route, et une décision d'exception exige encore une accessibilité réseau directe.