Perhatikan status CONNECT Go dalam OnProxyConnectResponse
Pasang cangkuk pada pengangkutan sebelum permintaan; memulangkan nil mengekalkan pemeriksaan status terowong biasa.
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}Gunakan context, net/http dan net/url; penegasan jenis standard menganggap pengangkutan itu kekal dipasang. proxyURL dihuraikan, dan observeConnect mesti selamat dari segi keserentakan. Untuk probe HTTPS awam yang dibenarkan, Senarai proksi HTTP membekalkan calon untuk URL proksi itu.
Callback berjalan sebelum CONNECT diperiksa untuk 200 yang berjaya, jadi ia juga boleh memerhati 407. Nil meneruskan pemeriksaan biasa dan tidak menerima terowong yang ditolak; ralat menyebabkan permintaan gagal.
X-Proxy-Region ialah contoh yang ditentukan oleh pembekal. Baca status dan pengepala di sini dan biarkan pemilikan body dan soket dengan Transport, yang kemudian mengendalikan TLS destinasi.
Ini memerhati penyediaan terowong baharu, bukan setiap permintaan. Sambungan yang digunakan semula tiada respons CONNECT baharu, dan respons laman web mempunyai pengepala berasingan.