Bheka isimo se-CONNECT se-Go ku-OnProxyConnectResponse
Faka i-hook ku-transport ngaphambi kwezicelo; ukubuyisela nil kugcina ukuhlolwa kwesimo se-tunnel okuvamile.
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}Sebenzisa context, net/http ne-net/url; isimemezelo sohlobo olujwayelekile sicabanga ukuthi leyo transport ihlala ifakiwe. proxyURL iyahlaziywa, futhi observeConnect kufanele iphephe mayelana nokusebenza ngesikhathi esisodwa. Ezivivinyweni zomphakathi ze-HTTPS ezivunyelwe, Uhlu lwama-proxy e-HTTP ihlinzeka ngabangeneleli be-proxy URL leyo.
I-callback isebenza ngaphambi kokuhlola i-CONNECT ukuthi ingu-200 ophumelelayo, ngakho ingabona futhi u-407. I-nil iqhubeka nokuhlola okuvamile futhi ayamukeli i-tunnel enqatshiwe; iphutha lenza isicelo sehluleke.
X-Proxy-Region isibonelo esichazwe umhlinzeki. Funda isimo nama-headers lapha bese ushiya ubunikazi be-body ne-socket ku-Transport, esebe isibhekana ne-TLS yendawo ekuyiwa kuyo.
Lokhu kubheka ukusungulwa kwe-tunnel entsha, hhayi isicelo ngasinye. Ukuxhumana okusetshenziswe kabusha akunayo i-CONNECT response entsha, futhi i-response yewebhusayithi inama-headers ahlukene.