使用身份验证进行HTTP代理

我需要使用PostForm方法将代理与auth一起使用。如果我使用类似(简体)的内容:

request, err := http.NewRequest("GET", url.String(), nil)

response, err := client.Do(request)

我可以轻松做到request.Header.Add("Proxy-Authorization",

basicAuth),并且效果很好。但是现在,我正在编辑第三方程序包,并尝试将代理添加到现有代码中:

    proxyStr := "http://proxy.com:8080"

proxyURL, _ := url.Parse(proxyStr)

transport := &http.Transport{

Proxy: http.ProxyURL(proxyURL),

}

bot.Client = &http.Client{

Transport: transport,

}

resp, err := bot.Client.PostForm(method, params)

auth := "username:password"

basicAuth := "Basic " + base64.StdEncoding.EncodeToString([]byte(auth))

resp.Header.Add("Proxy-Authorization", basicAuth)

在我看来,它是行不通的,而且失败了resp.Header.Add("Proxy-Authorization",

basicAuth)。在此示例中,没有身份验证的代理可以正常工作。有人知道吗,在这种情况下我可以在auth中使用代理吗?

回答:

您正在尝试向响应中添加标头,这不是您发送到服务器的内容,而是您收到的内容。您必须向请求中添加标头和数据,您必须先将其组装,然后再像这样执行它:

data := url.Values{} // the form data

data.Add("foo-key", "some data")

req, err := http.NewRequest("POST","https://yoururl", strings.NewReader(data.Encode()))

auth := "username:password"

basicAuth := "Basic " + base64.StdEncoding.EncodeToString([]byte(auth))

req.Header.Add("Proxy-Authorization", basicAuth)

req.Header.Add("Content-Type", "application/x-www-form-urlencoded")

resp, err := bot.Client.Do(req)

然后,您只需使用响应(resp

以上是 使用身份验证进行HTTP代理 的全部内容, 来源链接: utcz.com/qa/430270.html

回到顶部