我在负载平衡服务器上使用 Envoy 作为 mTLS 代理。Go 客户端对负载均衡器进行 HTTPS 调用,负载均衡器以重定向到另一台服务器的方式进行响应。我需要修改响应中的端口号以使用 Envoy 端口。
是否可以读取Response.Header.Get("Location")
并创建新响应以更改端口?
文档说_
// RoundTrip 不应尝试解释响应。
它看起来像
type EnvoyRoundTripper struct {
PortMapper http.RoundTripper
}
func (ert EnvoyRoundTripper) RoundTrip(req *http.Request) (res *http.Response, e error) {
res, e = ert.PortMapper.RoundTrip(req)
if e == nil && res.StatusCode == http.StatusTemporaryRedirect {
redirect := res.Header.Get("Location")
// res = Create a new Response with a modified redirect
}
return
}