使用内置的 http 包在 golang 中创建一个 http 到 https 的转换转发代理
Creating an http to https conversion forward proxy in golang with built in http package
我是 Golang 的初学者,找不到直接的方法来实现它。我有一个用例,其中后端服务器必须使用代理与前端服务器通信,其中一些前端服务器仅支持 https。
我正在考虑使用两个端口,一个作为 HTTP 转发,另一个作为 HTTPS 转发。后端始终通过 HTTP 与代理对话。有更好的方法吗?
我当前的代理服务器没有进行 http 到 https 的转换。它仍然使用 HTTP,我不明白为什么?
egressClient := &http.Client{
Transport: &http.Transport{
TLSClientConfig: &tls.Config{
InsecureSkipVerify: true,
},
},
}
html, err := egressClient.Transport.RoundTrip(r)
if err != nil {
log.Fatal(err)
}
website, err := ioutil.ReadAll(html.Body)
if err != nil {
log.Fatal(err)
}
html.Body.Close()
log.Print(string(website))
其中r
是从后端获取的HTTP请求。我必须将 r 作为 HTTPS 请求转发。
我认为这篇博客对golang 中的http 和https 做了很多解释。你可以通过这个:https://posener.github.io/http2/
通过将 r.URL.Scheme = "https"
设置为评论中建议的 @leaf bebop 已经解决了这个问题。将方案设置为 HTTPS 后,请求现在将作为 HTTPS 发送。
有用的参考资料:
https://posener.github.io/http2/ 由@Amrendra Yadav 建议,
HTTP/2 Cleartext (H2C) Client and How to play Go Lang with HTTP
我是 Golang 的初学者,找不到直接的方法来实现它。我有一个用例,其中后端服务器必须使用代理与前端服务器通信,其中一些前端服务器仅支持 https。
我正在考虑使用两个端口,一个作为 HTTP 转发,另一个作为 HTTPS 转发。后端始终通过 HTTP 与代理对话。有更好的方法吗?
我当前的代理服务器没有进行 http 到 https 的转换。它仍然使用 HTTP,我不明白为什么?
egressClient := &http.Client{
Transport: &http.Transport{
TLSClientConfig: &tls.Config{
InsecureSkipVerify: true,
},
},
}
html, err := egressClient.Transport.RoundTrip(r)
if err != nil {
log.Fatal(err)
}
website, err := ioutil.ReadAll(html.Body)
if err != nil {
log.Fatal(err)
}
html.Body.Close()
log.Print(string(website))
其中r
是从后端获取的HTTP请求。我必须将 r 作为 HTTPS 请求转发。
我认为这篇博客对golang 中的http 和https 做了很多解释。你可以通过这个:https://posener.github.io/http2/
通过将 r.URL.Scheme = "https"
设置为评论中建议的 @leaf bebop 已经解决了这个问题。将方案设置为 HTTPS 后,请求现在将作为 HTTPS 发送。
有用的参考资料:
https://posener.github.io/http2/ 由@Amrendra Yadav 建议, HTTP/2 Cleartext (H2C) Client and How to play Go Lang with HTTP