307使用授权标头重定向

时间:2020-01-30 18:12:29

标签: go redirect

在查看Go docs中的http时,似乎响应为Authorization307标头被删除了。显然,几乎每种情况都有意义,但是有没有办法不删除Authorization标头?

1 个答案:

答案 0 :(得分:1)

您可以修改http.Client,以使用CheckRedirect删除标头后再次添加标头:

CheckRedirect func(req *Request, via []*Request) error

由于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
    },
}