ตรวจสอบกฎ NO_PROXY ของ .NET ด้วย HttpClient.DefaultProxy.IsBypassed
ระบุทั้งโดเมนเปล่าและรูปแบบที่มีจุดนำหน้าเมื่อ HttpClient ต้องข้ามพร็อกซีสำหรับทั้งสอง แล้วตรวจสอบ IsBypassed
ตามนโยบายพร็อกซีจากสภาพแวดล้อมที่จัดทำเอกสารไว้ของ HttpClient นั้น example.internal และ .example.internal จับคู่ต่างกัน ชื่อเปล่าเลือกโฮสต์แม่ ส่วนรูปแบบที่มีจุดนำหน้าเลือกโดเมนย่อยของโฮสต์นั้น
หากทั้งสองควรเชื่อมต่อโดยตรง ให้ใส่ทั้งสองไว้ในสภาพแวดล้อมตอนเริ่มระบบ:
export no_proxy='example.internal,.example.internal'
รวมรายการเหล่านี้กับรายการข้อยกเว้นที่มีอยู่ตามที่ต้องการ ในระบบที่ชื่อตัวแปรแยกตัวพิมพ์ใหญ่-เล็ก .NET จะตรวจชื่อสภาพแวดล้อมพร็อกซีก่อนเป็นตัวพิมพ์เล็กแล้วจึงเป็นตัวพิมพ์ใหญ่ ดังนั้น no_proxy ที่ค้างมาอาจมีลำดับก่อน NO_PROXY
ภายในแอปพลิเคชัน สามารถตรวจสอบตัวเลือกเริ่มต้นได้โดยไม่ต้องส่งคำขอ HTTP ไปยังปลายทาง:
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)}");
}
ชิ้นส่วนนี้ใช้ System และ System.Net.Http หากแอปพลิเคชันระบุ IWebProxy อื่นไว้อย่างชัดเจน ให้ตรวจพร็อกซีจริงของตัวจัดการแทน ตั้งค่าสภาพแวดล้อมที่ต้องการก่อนพร็อกซีเริ่มต้นจะถูกกำหนดค่า
เหล่านี้คือกฎที่จัดทำเอกสารไว้ของ .NET ผลลัพธ์ของ curl ที่ใช้สตริงเดียวกันไม่ได้ยืนยันว่าไคลเอนต์อื่นเลือกเส้นทางเดียวกัน และการตัดสินใจข้ามพร็อกซียังต้องมีการเข้าถึงเครือข่ายโดยตรง