Behou ProxyFromEnvironment wanneer jy Go se HTTP-transport aanpas
Behou Go se omgewingsproksi-keuse wanneer jy transport-tydperke of verbindingspoele aanpas, in plaas daarvan om die verstek met 'n nulwaarde-Proxy-veld te vervang.
Go se standaard DefaultTransport stel Proxy op ProxyFromEnvironment. 'n Apart geboude &http.Transport{} het 'n nul-Proxy-funksie, wat geen proksi kies nie.
Daardie verskil kan ontstaan nadat 'n transport bygevoeg is net om 'n tydperk te verander. Met die standaardverstek nog geïnstalleer, kloon dit en verander die veld wat jy nodig het:
transport := http.DefaultTransport.(*http.Transport).Clone()
transport.ResponseHeaderTimeout = 15 * time.Second
client := &http.Client{
Transport: transport,
Timeout: 30 * time.Second,
}Die kloon behou omgewingsproksi-keuse en die ander verstek transport-instellings. Die tipe-assertasie aanvaar dat die toepassing nie DefaultTransport met 'n ander RoundTripper vervang het nie.
Vir 'n transport wat doelbewus van nuuts af gebou is, stel Proxy: http.ProxyFromEnvironment eksplisiet wanneer dit die roeteringsbeleid is. 'n Eksplisiete ProxyURL-funksie verteenwoordig 'n ander beleid: een gekose tussenganger.
Konfigureer die transport voordat gelyktydige versoeke dit gebruik, en hergebruik dit dan vir die werklading. Om 'n gedeelde verstekobjek te verander, kan onverwante kliënte raak.
Pasgemaakte TLS-instellings is apart. Om sertifikaatverifikasie te deaktiveer is nie nodig om proksi-ontdekking te behou nie, en dit sou die sekuriteit van elke ooreenstemmende HTTPS-versoek verander.