Go CONNECT-oleku jälgimine OnProxyConnectResponse-is
Paigalda konks transporti külge enne päringuid; nil-i tagastamine säilitab tavapärase tunnelioleku kontrolli.
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}Kasuta context, net/http ja net/url; standardne tüübiväide eeldab, et see transport jääb paigaldatuks. proxyURL parsitakse ja observeConnect peab olema samaaegsuse suhtes turvaline. Lubatud avalike HTTPS-katsete jaoks pakub HTTP-prokside loend kandidaate selle proxy URL-i jaoks.
Tagasikutse käivitub enne CONNECT-i kontrollimist eduka 200 puhul, seega suudab see jälgida ka 407-t. Nil jätkab tavalist kontrolli ega võta vastu tagasilükatud tunnelit; viga teeb päringu ebaõnnestunuks.
X-Proxy-Region on teenusepakkuja määratud näide. Loe siin olekut ja päiseid ning jäta keha ja socketi omandiõigus Transportile, mis seejärel haldab sihtkoha TLS-i.
See jälgib uue tunneli loomist, mitte iga päringut. Taaskasutatud ühendusel pole uut CONNECT-vastust ja veebisaidi vastusel on eraldi päised.