Golang:如何使 http 客户端不遵循重定向?
Golang: how to make http client not following redirects?
我想使用具有以下特征的 HTTP 客户端进行 HTTP 调用:
- 不要遵循重定向(只获取第一个调用的完整响应,returns 一个 302 重定向代码)
- 能够接收 cookie
因此,我正在寻找 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
},
}
我想使用具有以下特征的 HTTP 客户端进行 HTTP 调用:
- 不要遵循重定向(只获取第一个调用的完整响应,returns 一个 302 重定向代码)
- 能够接收 cookie
因此,我正在寻找 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
},
}