1

我在负载平衡服务器上使用 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
 }
4

0 回答 0