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.

Bài viết liên quan