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 ପ୍ରତିକ୍ରିୟା ନଥାଏ, ଏବଂ ୱେବସାଇଟ୍ ର ପ୍ରତିକ୍ରିୟାର ହେଡର୍ ଅଲଗା ଥାଏ।