Διατηρήστε το ProxyFromEnvironment όταν προσαρμόζετε το HTTP transport της Go
Διατηρήστε την επιλογή proxy από το περιβάλλον της Go όταν προσαρμόζετε χρονικά όρια μεταφοράς ή pools συνδέσεων, αντί να αντικαταστήσετε την προεπιλογή με πεδίο Proxy μηδενικής τιμής.
Το τυπικό 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.