Tarkkaile Gon CONNECT-tilaa OnProxyConnectResponse-kutsussa
Asenna koukku transporttiin ennen pyyntöjä; nilin palauttaminen säilyttää tunnelin tilan normaalin tarkistuksen.
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}Käytä context, net/http ja net/url; vakiotyyppiväite olettaa, että tämä transport pysyy asennettuna. proxyURL jäsennetään, ja observeConnect on oltava rinnakkaisuuden suhteen turvallinen. Sallituille julkisille HTTPS-testeille HTTP-välityspalvelinluettelo tarjoaa ehdokkaita kyseiselle proxy-URL:lle.
Takaisinkutsu suoritetaan ennen kuin CONNECT tarkistetaan onnistuneen 200 varalta, joten se voi havaita myös 407:n. Nil jatkaa normaalia tarkistusta eikä hyväksy hylättyä tunnelia; virhe epäonnistuttaa pyynnön.
X-Proxy-Region on palveluntarjoajan määrittelemä esimerkki. Lue tila ja otsakkeet tästä ja jätä rungon ja socketin omistus Transportille, joka hoitaa sitten kohteen TLS:n.
Tämä tarkkailee uuden tunnelin muodostusta, ei jokaista pyyntöä. Uudelleenkäytetty yhteys ei tuota uutta CONNECT-vastausta, ja verkkosivun vastauksella on erilliset otsakkeet.