go - 如何将 tlsConfig 与 RoundTripper 一起使用?
问题描述
我有这段代码实现了一个带有自定义 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}}
推荐阅读
- vba - 用于查询“下一个”的内部在 VBA 中不起作用
- c# - 在 EWS 订阅中发送邮件时获取 PushNotification
- javascript - 带 args 的命令在 discord.js v12 中不起作用
- python - AttributeError:无法设置属性 - 我该如何解决?
- python - 如何拟合解释不确定性的指数衰减曲线?
- javascript - Javascript 获取结果待处理在 React
- lotus-notes - Lotus Notes 错误“未在索引中找到条目或未构建视图的索引”
- questdb - 如何将包含 IP 地址的 CSV 文件导入 QuestDB?
- linux - 将固定参数添加到 docker 入口点中的命令参数
- json - 用于验证至少一个列表的 Jsonschema 存在