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.

Articole similare