OnProxyConnectResponse માં Go ની CONNECT સ્થિતિ નિરીક્ષણ કરો
વિનંતીઓ પહેલાં ટ્રાન્સપોર્ટ પર હૂક સ્થાપિત કરો; nil પરત કરવાથી તેની સામાન્ય ટનલ-સ્થિતિ તપાસ જળવાય છે.
transport := http.DefaultTransport.(*http.Transport).Clone()
transport.Proxy = http.ProxyURL(proxyURL)
transport.OnProxyConnectResponse = func(
_ context.Context,
_ *url.URL,
_ *http.Request,
response *http.Response,
) error {
observeConnect(response.StatusCode, response.Header.Get("X-Proxy-Region"))
return nil
}
client := &http.Client{Transport: transport}context, net/http અને net/url વાપરો; માનક-ડિફોલ્ટ પ્રકારનો દાવો ધારે છે કે તે ટ્રાન્સપોર્ટ સ્થાપિત રહે છે. proxyURL પાર્સ થાય છે, અને observeConnect સમવર્તી-સુરક્ષિત હોવું જોઈએ. મંજૂર જાહેર HTTPS પરીક્ષણો માટે HTTP પ્રોક્સી યાદી તે પ્રોક્સી URL માટે ઉમેદવારો પૂરા પાડે છે.
કૉલબેક CONNECT ને સફળ 200 માટે તપાસતા પહેલાં ચાલે છે, તેથી તે 407 પણ જોઈ શકે છે. nil સામાન્ય તપાસ ચાલુ રાખે છે અને નકારેલી ટનલ સ્વીકારતું નથી; ભૂલ વિનંતીને નિષ્ફળ કરે છે.
X-Proxy-Region પ્રદાતા-નિર્ધારિત ઉદાહરણ છે. અહીં સ્થિતિ અને હેડર વાંચો અને બોડી તથા સોકેટની માલિકી Transport ને સોંપો, જે પછી ગંતવ્ય TLS સંભાળે છે.
આ નવી ટનલ સ્થાપના નિરીક્ષણ કરે છે, દરેક વિનંતી નહીં. ફરી વપરાયેલા કનેક્શનમાં નવો CONNECT પ્રતિભાવ હોતો નથી, અને વેબસાઇટના પ્રતિભાવમાં અલગ હેડર હોય છે.