Как я могу использовать tlsConfig с RoundTripper? - PullRequest
0 голосов
/ 13 марта 2020

У меня есть этот код, который реализует http-клиент с пользовательским RoundTripper для добавления нескольких заголовков по умолчанию всякий раз, когда Client используется для выполнения http-вызовов.

var Client *http.Client

type customTransport struct {
    underlyingTransport http.RoundTripper
}

func (t *customTransport) RoundTrip(req *http.Request) (*http.Response, error) {
    req.Header.Add("Authorization", "Bearer")
    req.Header.Add("Version", "2017-11-23") 
    return t.underlyingTransport.RoundTrip(req)
}

func CreateClient() error {
    // Setup HTTPS client
    tlsConfig := &tls.Config{
        InsecureSkipVerify: true,
    }
    tlsConfig.BuildNameToCertificate()

    // transport := &http.Transport{TLSClientConfig: tlsConfig}
    // Client = &http.Client{Transport: transport}
    Client = &http.Client{Transport: &customTransport{underlyingTransport: http.DefaultTransport}}

    return nil
}

Вы можете видеть, что у меня есть tlsConfig. У меня вопрос, как мне включить это tlsConfig в мой клиент?

1 Ответ

1 голос
/ 13 марта 2020

Вы обрабатываете это, вызывая исходный / заданный по умолчанию транспорт в вашем методе RoundTrip, который вы уже делаете:

return t.underlyingTransport.RoundTrip(req)

Так что вам просто нужно правильно настроить его:

Client = &http.Client{Transport: &customTransport{underlyingTransport: http.DefaultTransport}}

Что вы уже делаете.

Единственное, что вам нужно изменить, это то, что вы должны использовать транспорт с использованием вашей конфигурации TLS, а не http.DefaultTransport:

transport := &http.Transport{
    TLSClientConfig: tlsConfig,
}
Client = &http.Client{Transport: &customTransport{underlyingTransport: transport}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...