307 перенаправление с заголовком авторизации - PullRequest
0 голосов
/ 30 января 2020

Если посмотреть на Go docs для http, похоже, что заголовок Authorization удаляется, когда ответом является 307. Очевидно, что это имеет смысл почти для каждого случая, но есть ли способ не удалять заголовок Authorization?

1 Ответ

1 голос
/ 30 января 2020

Вы можете изменить свой 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
    },
}
...