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 प्रतिक्रिया हुँदैन, र वेबसाइटको प्रतिक्रियाका हेडरहरू छुट्टै हुन्छन्।