Go యొక్క HTTP ట్రాన్స్పోర్ట్ను అనుకూలీకరించేటప్పుడు ProxyFromEnvironment ఉంచండి
ట్రాన్స్పోర్ట్ టైమౌట్లు లేదా కనెక్షన్ పూల్లను అనుకూలీకరించేటప్పుడు Go యొక్క పర్యావరణ ప్రాక్సీ ఎంపికను కాపాడండి, డిఫాల్ట్ను సున్నా విలువ గల Proxy ఫీల్డ్తో భర్తీ చేయకుండా.
Go యొక్క ప్రామాణిక DefaultTransport, Proxy ను ProxyFromEnvironment గా సెట్ చేస్తుంది. విడిగా నిర్మించిన &http.Transport{} లో Proxy ఫంక్షన్ nil ఉంటుంది, కాబట్టి అది ఏ ప్రాక్సీని ఎంచుకోదు.
టైమౌట్ను మార్చడానికి మాత్రమే ట్రాన్స్పోర్ట్ను జోడించిన తర్వాత ఈ వ్యత్యాసం కనిపించవచ్చు. ప్రామాణిక డిఫాల్ట్ ఇంకా ఇన్స్టాల్ చేయబడి ఉంటే, దాన్ని క్లోన్ చేసి అవసరమైన ఫీల్డ్ను మార్చండి:
transport := http.DefaultTransport.(*http.Transport).Clone()
transport.ResponseHeaderTimeout = 15 * time.Second
client := &http.Client{
Transport: transport,
Timeout: 30 * time.Second,
}క్లోన్ పర్యావరణ ప్రాక్సీ ఎంపికను మరియు ఇతర డిఫాల్ట్ ట్రాన్స్పోర్ట్ సెట్టింగ్లను కాపాడుతుంది. రకం నిర్ధారణ, అనువర్తనం DefaultTransport ను మరొక RoundTripper తో భర్తీ చేయలేదని ఊహిస్తుంది.
ఉద్దేశపూర్వకంగా సున్నా నుండి నిర్మించిన ట్రాన్స్పోర్ట్ కోసం, అది దాని రూటింగ్ విధానం అయినప్పుడు Proxy: http.ProxyFromEnvironment ను స్పష్టంగా సెట్ చేయండి. స్పష్టమైన ProxyURL ఫంక్షన్ వేరే విధానాన్ని వ్యక్తపరుస్తుంది: ఎంచుకున్న ఒక మధ్యవర్తి.
ఏకకాల అభ్యర్థనలు దాన్ని ఉపయోగించే ముందు ట్రాన్స్పోర్ట్ను కాన్ఫిగర్ చేయండి, ఆ తర్వాత పనిభారం కోసం దాన్ని మళ్లీ ఉపయోగించండి. పంచుకున్న డిఫాల్ట్ ఆబ్జెక్ట్ను మార్చడం సంబంధం లేని క్లయింట్లను ప్రభావితం చేయవచ్చు.
అనుకూల TLS సెట్టింగ్లు వేరుగా ఉంటాయి. ప్రాక్సీ గుర్తింపును నిలుపుకోవడానికి సర్టిఫికెట్ ధృవీకరణను నిలిపివేయాల్సిన అవసరం లేదు, మరియు అది సరిపోలే ప్రతి HTTPS అభ్యర్థన యొక్క భద్రతను మారుస్తుంది.