Verificare le regole NO_PROXY di .NET con HttpClient.DefaultProxy.IsBypassed
Elencare sia il dominio nudo sia la forma con punto iniziale quando HttpClient deve aggirare il proxy per entrambi, poi ispezionare IsBypassed.
Secondo la politica del proxy di ambiente documentata di HttpClient, example.internal e .example.internal corrispondono in modo diverso. Il nome nudo seleziona l'host genitore; la forma con punto iniziale seleziona i suoi sottodomini.
Se entrambi devono passare direttamente, includerli entrambi nell'ambiente di avvio:
export no_proxy='example.internal,.example.internal'
Unirli all'elenco di esclusione esistente che si intende usare. Nei sistemi in cui i nomi delle variabili distinguono maiuscole e minuscole, .NET controlla prima le variabili proxy in minuscolo e poi quelle in maiuscolo, quindi un no_proxy obsoleto può avere la precedenza su NO_PROXY.
Dentro l'applicazione, il selettore predefinito può essere ispezionato senza inviare la richiesta HTTP alla destinazione:
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)}");
}
Il frammento usa System e System.Net.Http. Se l'applicazione ha fornito esplicitamente un altro IWebProxy, ispezionare invece il proxy effettivo dell'handler. Impostare l'ambiente desiderato prima che il proxy predefinito venga inizializzato.
Queste sono le regole documentate di .NET. Un risultato di curl con la stessa stringa non dimostra che un altro client abbia scelto la stessa rotta, e una decisione di esclusione richiede comunque raggiungibilità di rete diretta.