Golang:如何使 http 客户端不遵循重定向?

Golang: how to make http client not following redirects?

我想使用具有以下特征的 HTTP 客户端进行 HTTP 调用:

因此,我正在寻找 http.Client 而不是 trasport.RoundTrip

的解决方案

我该怎么做?

如果您使用 http.Client,您可以选择使用 CheckRedirect field

此字段采用自定义函数,如果初始请求收到错误,该函数可以处理任何重定向。

一个简单的例子可能是这样的:

client: &http.Client{
    CheckRedirect: func(req *http.Request, via []*http.Request) error {
        return errors.New("something bad happened") // or maybe the error from the request
    },
}

您还可以 return http.ErrUseLastResponse error,其中 return 是最近的响应,其正文未关闭。

    client := &http.Client{
        CheckRedirect: func(req *http.Request, via []*http.Request) error {
            return http.ErrUseLastResponse
        },
    }

根据https://pkg.go.dev/net/http#Client.CheckRedirect