Το τυπικό DefaultTransport της Go ορίζει το Proxy σε ProxyFromEnvironment. Ένα ξεχωριστά κατασκευασμένο &http.Transport{} έχει συνάρτηση Proxy nil, η οποία δεν επιλέγει κανένα proxy.

Αυτή η διαφορά μπορεί να εμφανιστεί αφού προστεθεί ένα transport μόνο για να αλλάξει ένα χρονικό όριο. Όσο είναι ακόμη εγκατεστημένη η τυπική προεπιλογή, κλωνοποιήστε την και αλλάξτε το πεδίο που χρειάζεστε:

transport := http.DefaultTransport.(*http.Transport).Clone()
transport.ResponseHeaderTimeout = 15 * time.Second

client := &http.Client{
    Transport: transport,
    Timeout: 30 * time.Second,
}

Το κλώνο διατηρεί την επιλογή proxy από το περιβάλλον και τις άλλες προεπιλεγμένες ρυθμίσεις transport. Η δήλωση τύπου υποθέτει ότι η εφαρμογή δεν έχει αντικαταστήσει το DefaultTransport με άλλο RoundTripper.

Για ένα transport που έχει κατασκευαστεί σκόπιμα από το μηδέν, ορίστε ρητά το Proxy: http.ProxyFromEnvironment όταν αυτή είναι η πολιτική δρομολόγησής του. Μια ρητή συνάρτηση ProxyURL εκφράζει διαφορετική πολιτική: ένας επιλεγμένος ενδιάμεσος.

Διαμορφώστε το transport πριν το χρησιμοποιήσουν ταυτόχρονα αιτήματα και μετά επαναχρησιμοποιήστε το για το φόρτο εργασίας. Η αλλαγή ενός κοινόχρηστου προεπιλεγμένου αντικειμένου μπορεί να επηρεάσει άσχετους πελάτες.

Οι προσαρμοσμένες ρυθμίσεις TLS είναι ξεχωριστές. Η απενεργοποίηση της επαλήθευσης πιστοποιητικών δεν απαιτείται για τη διατήρηση της ανακάλυψης proxy και θα άλλαζε την ασφάλεια κάθε αντίστοιχου αιτήματος HTTPS.

Σχετικά άρθρα