Go 307使用授权标头重定向

Go 307使用授权标头重定向,go,redirect,Go,Redirect,在查看http的时,当响应是307时,Authorization头似乎被删除。显然,这对几乎所有情况都有意义,但有没有办法不删除授权标题?您可以修改http.Client以在删除标题后使用以下方法再次添加标题: 由于req是即将发出的请求,因此可以在发送前对其进行修改。进行更改后,返回nil,指示仍应发送请求 由于这是对http客户机而不是请求的更改,因此您应该检查此重定向是否仅用于您需要它的一个URL(以防您使用该客户机执行其他请求) 您的客户端定义可以如下所示: http.Client{

在查看http的时,当响应是
307
时,
Authorization
头似乎被删除。显然,这对几乎所有情况都有意义,但有没有办法不删除
授权
标题?

您可以修改
http.Client
以在删除标题后使用以下方法再次添加标题:

由于
req
是即将发出的请求,因此可以在发送前对其进行修改。进行更改后,返回
nil
,指示仍应发送请求

由于这是对http客户机而不是请求的更改,因此您应该检查此重定向是否仅用于您需要它的一个URL(以防您使用该客户机执行其他请求)

您的客户端定义可以如下所示:

http.Client{
    CheckRedirect: func(req *http.Request, via []*http.Request) error {
        // you can check old responses for a status code
        if len(via) != 0 && via[0].Response.StatusCode == http.StatusTemporaryRedirect {
            req.Header.Add("Authorization", "some-value")
        }
        return nil
    },
}
http.Client{
    CheckRedirect: func(req *http.Request, via []*http.Request) error {
        // you can check old responses for a status code
        if len(via) != 0 && via[0].Response.StatusCode == http.StatusTemporaryRedirect {
            req.Header.Add("Authorization", "some-value")
        }
        return nil
    },
}