设置具有 HTTP 请求身份验证的代理可能具有挑战性,尤其是在将其合并到现有第三方代码中时。本文深入探讨了尝试将代理身份验证添加到现有代码库时遇到的特定问题。
问题陈述:
提供的代码片段建立了一个没有身份验证的 HTTP 代理使用带有 ProxyURL 函数的传输对象。但是,在 POST 请求后向响应对象添加 Proxy-Authorization 标头无法对代理进行身份验证。
解决方案:
要解决此问题,请直接指定传输对象中带有身份验证凭据的代理 URL。
// Create an HTTP client with proxy authentication client := &http.Client{ Transport: &http.Transport{ Proxy: http.ProxyURL(&url.URL{ Scheme: "http", User: url.UserPassword("username", "password"), Host: "proxy.com:8080", }), }, } // Use the client to make requests with proxy authentication resp, err := client.PostForm(method, params)
或者,也可以解析代理 URL
// Parse the proxy URL proxyURL, _ := url.Parse("http://username:password@proxy.com:8080") // Create an HTTP client with proxy authentication client := &http.Client{ Transport: &http.Transport{ Proxy: http.ProxyURL(proxyURL), }, } // Use the client to make requests with proxy authentication resp, err := client.PostForm(method, params)
此方法可确保将代理凭据合并到传输对象中,从而允许 HTTP POST 请求使用经过身份验证的代理。
以上是如何在 Go 中正确配置 HTTP 代理身份验证?的详细内容。更多信息请关注PHP中文网其他相关文章!