Segundo a política de proxy de ambiente documentada do HttpClient, example.internal e .example.internal correspondem de formas diferentes. O nome puro seleciona o host pai; a forma com ponto inicial seleciona os seus subdomínios.

Se ambos devem ir diretamente, inclua os dois no ambiente de inicialização:

export no_proxy='example.internal,.example.internal'

Combine-os com a lista de exceções existente que você pretende usar. Em sistemas cujos nomes de variáveis diferenciam maiúsculas de minúsculas, o .NET verifica primeiro as variáveis de proxy em minúsculas e depois as em maiúsculas, então um no_proxy antigo pode ter precedência sobre NO_PROXY.

Dentro da aplicação, o seletor predefinido pode ser inspecionado sem enviar a requisição HTTP ao destino:

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)}");
}

O trecho usa System e System.Net.Http. Se a aplicação forneceu explicitamente outro IWebProxy, inspecione o proxy real do manipulador. Defina o ambiente desejado antes que o proxy padrão seja inicializado.

Estas são as regras documentadas do .NET. Um resultado de curl com a mesma string não prova que outro cliente escolheu a mesma rota, e uma decisão de exceção ainda exige acessibilidade de rede direta.

Artigos relacionados