NO_PROXY-Regeln von .NET mit HttpClient.DefaultProxy.IsBypassed prüfen
Tragen Sie sowohl die reine Domain als auch die Form mit führendem Punkt ein, wenn HttpClient für beide am Proxy vorbeigehen soll, und prüfen Sie dann IsBypassed.
Nach der dokumentierten Umgebungsproxy-Richtlinie von HttpClient treffen example.internal und .example.internal unterschiedlich zu. Der reine Name wählt den übergeordneten Host; die Form mit führendem Punkt wählt dessen Subdomains.
Sollen beide direkt laufen, nehmen Sie beide in die Startumgebung auf:
export no_proxy='example.internal,.example.internal'
Führen Sie diese mit der vorgesehenen bestehenden Ausnahmeliste zusammen. Auf Systemen, deren Variablennamen zwischen Groß- und Kleinschreibung unterscheiden, prüft .NET zuerst Proxy-Variablen in Kleinschreibung und danach solche in Großschreibung, sodass ein veraltetes no_proxy Vorrang vor NO_PROXY haben kann.
Innerhalb der Anwendung lässt sich der Standardselektor prüfen, ohne die HTTP-Anfrage an das Ziel zu senden:
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)}");
}
Das Fragment verwendet System und System.Net.Http. Wenn die Anwendung ausdrücklich ein anderes IWebProxy bereitstellt, prüfen Sie stattdessen den tatsächlichen Proxy des Handlers. Legen Sie die gewünschte Umgebung fest, bevor der Standardproxy initialisiert wird.
Dies sind die dokumentierten Regeln von .NET. Ein curl-Ergebnis mit derselben Zeichenkette belegt nicht, dass ein anderer Client dieselbe Route gewählt hat, und eine Ausnahmeentscheidung erfordert weiterhin direkte Netzwerkerreichbarkeit.