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 ಮತ್ತು net/url ಬಳಸಿ; ಪ್ರಮಾಣಿತ-ಡೀಫಾಲ್ಟ್ ಪ್ರಕಾರದ ಹೇಳಿಕೆ ಆ ಟ್ರಾನ್ಸ್‌ಪೋರ್ಟ್ ಸ್ಥಾಪಿತವಾಗಿಯೇ ಇರುತ್ತದೆ ಎಂದು ಊಹಿಸುತ್ತದೆ. proxyURL ಅನ್ನು ಪಾರ್ಸ್ ಮಾಡಲಾಗುತ್ತದೆ, ಮತ್ತು observeConnect ಸಮಕಾಲೀನತೆಗೆ ಸುರಕ್ಷಿತವಾಗಿರಬೇಕು. ಅನುಮತಿಸಲಾದ ಸಾರ್ವಜನಿಕ HTTPS ಪರೀಕ್ಷೆಗಳಿಗೆ HTTP ಪ್ರಾಕ್ಸಿ ಪಟ್ಟಿ ಆ ಪ್ರಾಕ್ಸಿ URL ಗೆ ಅಭ್ಯರ್ಥಿಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ.

ಕಾಲ್‌ಬ್ಯಾಕ್ CONNECT ಅನ್ನು ಯಶಸ್ವಿ 200 ಗಾಗಿ ಪರಿಶೀಲಿಸುವ ಮೊದಲು ಚಲಿಸುತ್ತದೆ, ಆದ್ದರಿಂದ ಅದು 407 ಅನ್ನು ಸಹ ಗಮನಿಸಬಹುದು. nil ಸಾಮಾನ್ಯ ಪರಿಶೀಲನೆಯನ್ನು ಮುಂದುವರಿಸುತ್ತದೆ ಮತ್ತು ತಿರಸ್ಕೃತ ಟನಲ್ ಅನ್ನು ಸ್ವೀಕರಿಸುವುದಿಲ್ಲ; ದೋಷವು ವಿನಂತಿಯನ್ನು ವಿಫಲಗೊಳಿಸುತ್ತದೆ.

X-Proxy-Region ಪೂರೈಕೆದಾರ-ವ್ಯಾಖ್ಯಾನಿತ ಉದಾಹರಣೆಯಾಗಿದೆ. ಇಲ್ಲಿ ಸ್ಥಿತಿ ಮತ್ತು ಹೆಡರ್‌ಗಳನ್ನು ಓದಿ ಮತ್ತು ಬಾಡಿ ಹಾಗೂ ಸಾಕೆಟ್‌ನ ಮಾಲೀಕತ್ವವನ್ನು Transport ಗೆ ಬಿಡಿ, ಅದು ನಂತರ ಗಮ್ಯಸ್ಥಾನದ TLS ಅನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ.

ಇದು ಹೊಸ ಟನಲ್ ಸ್ಥಾಪನೆಯನ್ನು ಗಮನಿಸುತ್ತದೆ, ಪ್ರತಿ ವಿನಂತಿಯನ್ನಲ್ಲ. ಮರುಬಳಕೆಯ ಸಂಪರ್ಕಕ್ಕೆ ಹೊಸ CONNECT ಪ್ರತಿಕ್ರಿಯೆ ಇಲ್ಲ, ಮತ್ತು ವೆಬ್‌ಸೈಟ್‌ನ ಪ್ರತಿಕ್ರಿಯೆಗೆ ಪ್ರತ್ಯೇಕ ಹೆಡರ್‌ಗಳಿವೆ.

ಸಂಬಂಧಿತ ಲೇಖನಗಳು