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

Dan*_*e B 1 http go http-redirect session-cookies

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

  • 不遵循重定向(只获得第一次调用的完整响应,返回302重定向代码)
  • 能够接收cookie

因此,我正在寻找一个解决方案,http.Client而不是与trasport.RoundTrip

我怎样才能做到这一点?

sys*_*cll 11

如果您使用a http.Client,则可以选择使用该CheckRedirect 字段.

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

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

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
    },
}
Run Code Online (Sandbox Code Playgroud)

您还可以返回http.ErrUseLastResponse 错误,该错误返回最近的响应,其主体未闭合.

  • @DanieleB:从CheckRedirect返回的错误是"标志" (2认同)