当前位置: > > > > 如何将 tlsConfig 与 RoundTripper 结合使用?
如何将 tlsConfig 与 RoundTripper 结合使用?
来源:stackoverflow
2024-04-19 21:09:31
0浏览
收藏
学习Golang要努力,但是不要急!今天的这篇文章《如何将 tlsConfig 与 RoundTripper 结合使用?》将会介绍到等等知识点,如果你想深入学习Golang,可以关注我!我会持续更新相关文章的,希望对大家都能有所帮助!
问题内容
我有这段代码,它实现了一个带有自定义 roundtripper 的 http 客户端,每当使用 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 合并到我的客户端中?
解决方案
您可以通过在 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}}
终于介绍完啦!小伙伴们,这篇关于《如何将 tlsConfig 与 RoundTripper 结合使用?》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~米云公众号也会发布Golang相关知识,快来关注吧!
