在查看Go docs中的http时,似乎响应为Authorization
时307
标头被删除了。显然,几乎每种情况都有意义,但是有没有办法不删除Authorization
标头?
答案 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
},
}