Go CONNECT holatini OnProxyConnectResponse ichida kuzatish
Hookni so'rovlardan oldin transportga o'rnating; nil qaytarish uning odatdagi tunnel holati tekshiruvini saqlaydi.
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 va net/url dan foydalaning; standart tur bayonoti bu transport o'rnatilgan holda qolishini nazarda tutadi. proxyURL tahlil qilinadi va observeConnect parallellikka xavfsiz bo'lishi kerak. Ruxsat etilgan ommaviy HTTPS sinovlari uchun HTTP proksi ro'yxati shu proxy URL uchun nomzodlarni taqdim etadi.
Callback CONNECT muvaffaqiyatli 200 ekanligini tekshirishdan oldin ishlaydi, shuning uchun 407 ni ham kuzata oladi. Nil odatdagi tekshiruvni davom ettiradi va rad etilgan tunnelni qabul qilmaydi; xato so'rovni muvaffaqiyatsiz qiladi.
X-Proxy-Region provayder tomonidan belgilangan misol. Bu yerda holat va sarlavhalarni o'qing, tana va socket egaligini Transportga qoldiring, u keyin manzil TLS ini boshqaradi.
Bu har bir so'rovni emas, yangi tunnel o'rnatilishini kuzatadi. Qayta ishlatilgan ulanishda yangi CONNECT javobi yo'q, veb-sayt javobining sarlavhalari esa alohida.