Păstrați ProxyFromEnvironment când personalizați transportul HTTP din Go
Păstrați selecția proxy din mediu a Go atunci când personalizați timeout-uri sau pool-uri de conexiuni ale transportului, în loc să înlocuiți valoarea implicită cu un câmp Proxy nul.
DefaultTransport standard din Go setează Proxy la ProxyFromEnvironment. Un &http.Transport{} construit separat are o funcție Proxy nil, care nu selectează niciun proxy.
Această diferență poate apărea după adăugarea unui transport doar pentru a schimba un timeout. Cât timp valoarea implicită standard este încă instalată, clonați-o și modificați câmpul de care aveți nevoie:
transport := http.DefaultTransport.(*http.Transport).Clone()
transport.ResponseHeaderTimeout = 15 * time.Second
client := &http.Client{
Transport: transport,
Timeout: 30 * time.Second,
}Clona păstrează selecția proxy din mediu și celelalte setări implicite ale transportului. Aserțiunea de tip presupune că aplicația nu a înlocuit DefaultTransport cu un alt RoundTripper.
Pentru un transport construit intenționat de la zero, setați Proxy: http.ProxyFromEnvironment explicit atunci când aceasta este politica sa de rutare. O funcție ProxyURL explicită exprimă o altă politică: un intermediar selectat.
Configurați transportul înainte ca cererile concurente să îl folosească, apoi reutilizați-l pentru sarcina de lucru. Modificarea unui obiect implicit partajat poate afecta clienți fără legătură.
Setările TLS personalizate sunt separate. Dezactivarea verificării certificatelor nu este necesară pentru a păstra descoperirea proxy și ar schimba securitatea fiecărei cereri HTTPS corespunzătoare.