Theo chính sách proxy môi trường được ghi trong tài liệu của HttpClient, example.internal và .example.internal khớp theo cách khác nhau. Tên trần chọn máy chủ cha; dạng có dấu chấm ở đầu chọn các miền con của nó.

Nếu cả hai cần đi trực tiếp, hãy đưa cả hai vào môi trường khởi động:

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

Gộp các mục này với danh sách ngoại lệ hiện có mà bạn dự định dùng. Trên các hệ thống phân biệt chữ hoa chữ thường trong tên biến, .NET kiểm tra tên biến môi trường proxy viết thường trước rồi mới đến tên viết hoa, nên một no_proxy cũ có thể được ưu tiên hơn NO_PROXY.

Bên trong ứng dụng, có thể kiểm tra bộ chọn mặc định mà không gửi yêu cầu HTTP đến đích:

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ạn mã dùng System và System.Net.Http. Nếu ứng dụng đã chỉ định rõ một IWebProxy khác, hãy kiểm tra proxy thực tế của handler thay vào đó. Đặt môi trường mong muốn trước khi proxy mặc định được khởi tạo.

Đây là các quy tắc đã được ghi trong tài liệu của .NET. Kết quả curl với cùng chuỗi không chứng minh rằng một ứng dụng khác chọn cùng tuyến đường, và quyết định bỏ qua vẫn cần khả năng tiếp cận mạng trực tiếp.

Bài viết liên quan