Giữ ProxyFromEnvironment khi tùy chỉnh transport HTTP của Go
Giữ nguyên lựa chọn proxy từ môi trường của Go khi tùy chỉnh thời gian chờ hoặc nhóm kết nối của transport, thay vì thay giá trị mặc định bằng trường Proxy rỗng.
DefaultTransport chuẩn của Go đặt Proxy thành ProxyFromEnvironment. Một &http.Transport{} được tạo riêng có hàm Proxy nil, do đó không chọn proxy nào.
Sự khác biệt đó có thể xuất hiện sau khi thêm transport chỉ để thay đổi thời gian chờ. Khi giá trị mặc định chuẩn vẫn được cài đặt, hãy sao chép nó và thay đổi trường bạn cần:
transport := http.DefaultTransport.(*http.Transport).Clone()
transport.ResponseHeaderTimeout = 15 * time.Second
client := &http.Client{
Transport: transport,
Timeout: 30 * time.Second,
}Bản sao giữ lại lựa chọn proxy từ môi trường và các cài đặt transport mặc định khác. Kiểm tra kiểu giả định rằng ứng dụng chưa thay DefaultTransport bằng một RoundTripper khác.
Đối với transport được cố ý xây dựng từ đầu, hãy đặt Proxy: http.ProxyFromEnvironment một cách rõ ràng khi đó là chính sách định tuyến của nó. Một hàm ProxyURL rõ ràng thể hiện chính sách khác: một trung gian được chọn.
Cấu hình transport trước khi các yêu cầu đồng thời sử dụng nó, sau đó dùng lại cho khối lượng công việc. Thay đổi một đối tượng mặc định dùng chung có thể ảnh hưởng đến các máy khách không liên quan.
Cài đặt TLS tùy chỉnh là riêng biệt. Không cần tắt xác minh chứng chỉ để giữ khả năng phát hiện proxy, và việc đó sẽ thay đổi bảo mật của mọi yêu cầu HTTPS khớp.