คง ProxyFromEnvironment ไว้เมื่อปรับแต่ง HTTP transport ของ Go
รักษาการเลือกพร็อกซีจากสภาพแวดล้อมของ Go ไว้เมื่อคุณปรับแต่งเวลาหมดอายุหรือพูลการเชื่อมต่อของ transport แทนการแทนที่ค่าเริ่มต้นด้วยฟิลด์ Proxy ที่ว่างเปล่า
DefaultTransport มาตรฐานของ Go ตั้งค่า Proxy เป็น ProxyFromEnvironment แต่ &http.Transport{} ที่สร้างแยกต่างหากมีฟังก์ชัน Proxy เป็น nil จึงไม่เลือกพร็อกซีใด ๆ
ความแตกต่างนี้อาจปรากฏขึ้นหลังจากเพิ่ม transport เพื่อเปลี่ยนเวลาหมดอายุเพียงอย่างเดียว ขณะที่ค่าเริ่มต้นมาตรฐานยังติดตั้งอยู่ ให้โคลนมันและเปลี่ยนฟิลด์ที่คุณต้องการ:
transport := http.DefaultTransport.(*http.Transport).Clone()
transport.ResponseHeaderTimeout = 15 * time.Second
client := &http.Client{
Transport: transport,
Timeout: 30 * time.Second,
}โคลนจะรักษาการเลือกพร็อกซีจากสภาพแวดล้อมและการตั้งค่า transport เริ่มต้นอื่น ๆ การยืนยันชนิดถือว่าแอปพลิเคชันไม่ได้แทนที่ DefaultTransport ด้วย RoundTripper อื่น
สำหรับ transport ที่สร้างขึ้นจากศูนย์โดยเจตนา ให้ตั้งค่า Proxy: http.ProxyFromEnvironment อย่างชัดเจนเมื่อนั่นคือแนวนโยบายการกำหนดเส้นทาง ฟังก์ชัน ProxyURL ที่ชัดเจนแสดงแนวนโยบายที่ต่างออกไป: ตัวกลางหนึ่งตัวที่เลือกไว้
กำหนดค่า transport ก่อนที่คำขอแบบพร้อมกันจะใช้งาน จากนั้นใช้ซ้ำสำหรับภาระงาน การเปลี่ยนออบเจ็กต์เริ่มต้นที่แชร์กันอาจส่งผลต่อไคลเอนต์ที่ไม่เกี่ยวข้อง
การตั้งค่า TLS แบบกำหนดเองแยกต่างหาก ไม่จำเป็นต้องปิดการตรวจสอบใบรับรองเพื่อรักษาการค้นหาพร็อกซี และจะเปลี่ยนความปลอดภัยของทุกคำขอ HTTPS ที่ตรงกัน