【问题标题】:How to get an HTTP Proxy response Header in Golang built-in HTTP client?如何在 Golang 内置 HTTP 客户端中获取 HTTP 代理响应标头?
【发布时间】:2022-11-17 09:43:02
【问题描述】:

我正在通过 HTTP 代理使用默认的“net/http”Golang 库执行一个简单的 HTTP GET 请求,并想读取第一个代理回复的内容(对于使用 CONNECT 方法的 HTTP 客户端请求)。在纯文本中,它看起来像

HTTP/1.1 200 OK
Request-Uid: <some id>
<another header>: <another value>

高朗代码:

...
proxyUrlParsed, errUrl := url.Parse(proxyUrl)
tr := &http.Transport{
   Proxy:   http.ProxyURL(proxyUrlParsed),
}
client := &http.Client{
   Transport: tr,
}
request, errReq := http.NewRequest("GET", targetUrl, nil)
response, errDo := client.Do(request)
// Response contains HTTP headers from the reply from the target resource but not the intermediate proxy.

我使用 DialContext 部分解决了它,但我需要实现协议的某些部分,我发现这些部分对于以后的支持来说不太方便且成本高昂。那么有没有一种简单而聪明的方法呢?

【问题讨论】:

    标签: http go debugging networking proxy


    【解决方案1】:

    使用/net/http/httputil.ReverseProxy代理请求,设置ModifyResponse字段为响应钩子。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-01
      • 2023-03-25
      • 2016-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-11
      • 1970-01-01
      相关资源
      最近更新 更多