Menurut kebijakan proksi lingkungan HttpClient yang terdokumentasi, example.internal dan .example.internal cocok secara berbeda. Nama polos memilih host induk; bentuk dengan titik di depan memilih subdomainnya.

Jika keduanya harus langsung, sertakan keduanya di lingkungan saat mulai:

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

Gabungkan keduanya dengan daftar pengecualian yang sudah ada dan Anda maksudkan. Pada sistem yang membedakan huruf besar-kecil pada nama variabel, .NET memeriksa nama lingkungan proksi huruf kecil lebih dahulu, baru huruf besar, sehingga no_proxy yang usang dapat didahulukan atas NO_PROXY.

Di dalam aplikasi, pemilih bawaan dapat diperiksa tanpa mengirim permintaan HTTP ke tujuan:

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

Fragmen ini memakai System dan System.Net.Http. Jika aplikasi secara eksplisit menyediakan IWebProxy lain, periksa proksi handler yang sebenarnya. Tetapkan lingkungan yang dimaksud sebelum proksi bawaan diinisialisasi.

Ini aturan .NET yang terdokumentasi. Hasil curl dengan string yang sama tidak membuktikan bahwa klien lain memilih rute yang sama, dan keputusan pengecualian tetap memerlukan keterjangkauan jaringan langsung.

Artikel terkait