Išsaugokite ProxyFromEnvironment tinkinant Go HTTP transportą
Išsaugokite Go aplinkos proxy pasirinkimą, kai tinkinate transporto laiko limitus arba jungčių telkinius, o ne pakeiskite numatytąjį nuliniu Proxy lauku.
Standartinis Go DefaultTransport nustato Proxy į ProxyFromEnvironment. Atskirai sukurtas &http.Transport{} turi nil Proxy funkciją, todėl nepasirenka jokio proxy.
Šis skirtumas gali atsirasti pridėjus transportą tik laiko limitui pakeisti. Kol standartinis numatytasis dar įdiegtas, nuklonuokite jį ir pakeiskite reikiamą lauką:
transport := http.DefaultTransport.(*http.Transport).Clone()
transport.ResponseHeaderTimeout = 15 * time.Second
client := &http.Client{
Transport: transport,
Timeout: 30 * time.Second,
}Klonas išsaugo aplinkos proxy pasirinkimą ir kitus numatytuosius transporto nustatymus. Tipo patikra daro prielaidą, kad programa nepakeitė DefaultTransport kitu RoundTripper.
Transportui, sąmoningai sukurtam nuo nulio, aiškiai nustatykite Proxy: http.ProxyFromEnvironment, kai tai yra jo maršrutizavimo politika. Aiški ProxyURL funkcija išreiškia kitą politiką: vienas pasirinktas tarpininkas.
Sukonfigūruokite transportą prieš tai, kai lygiagrečios užklausos jį naudos, o tada naudokite jį pakartotinai darbo krūviui. Bendro numatytojo objekto keitimas gali paveikti nesusijusius klientus.
Pasirinktinės TLS nuostatos yra atskiros. Išjungti sertifikatų tikrinimą nereikia norint išsaugoti proxy aptikimą, ir tai pakeistų kiekvienos atitinkančios HTTPS užklausos saugumą.