为了账号安全,请及时绑定邮箱和手机立即绑定

如何强制客户端使用 http/2?(而不是退回到 http 1.1)

如何强制客户端使用 http/2?(而不是退回到 http 1.1)

Go
慕后森 2023-05-08 17:50:26
如何强制一个简单的 Go 客户端使用 HTTP/2 并防止它退回到 HTTP 1.1?我有一个在“本地主机”上运行的简单 HTTP/2 服务器,它在回复中返回请求的详细信息。这是使用 Google Chrome 浏览器对此 URL 的输出:https://localhost:40443/bananasI like bananas!Method       = GETURL          = /bananasProto        = HTTP/2.0Host         = localhost:40443RequestURI   = /bananas但这是我为我的 Go 客户端代码得到的。你可以看到它回落到 HTTP 1.1I like monkeys!Method       = GETURL          = /monkeysProto        = HTTP/1.1Host         = localhost:40443RequestURI   = /monkeys下面是我使用 HTTP/2 连接同一服务器的最佳尝试的源代码,但它总是回退到 HTTP 1.1// simple http/2 clientpackage mainimport (    "crypto/tls"    "crypto/x509"    "fmt"    "io/ioutil"    "log"    "net/http")const (    certFile = "client-cert.pem"    keyFile  = "client-key.pem"    caFile   = "server-cert.pem")func main() {    // Load client certificate    cert, err := tls.LoadX509KeyPair(certFile, keyFile)    if err != nil {        log.Fatal(err)    }    // Load CA cert    caCert, err := ioutil.ReadFile(caFile)    if err != nil {        log.Fatal(err)    }    caCertPool := x509.NewCertPool()    caCertPool.AppendCertsFromPEM(caCert)    // Setup HTTPS client    tlsConfig := &tls.Config{        Certificates: []tls.Certificate{cert},        RootCAs:      caCertPool,    }    tlsConfig.BuildNameToCertificate()    transport := &http.Transport{TLSClientConfig: tlsConfig}    client := &http.Client{Transport: transport}    response, err := client.Get("https://localhost:40443/monkeys")    if err != nil {        log.Fatal(err)    }    defer response.Body.Close()    // dump response    text, err := ioutil.ReadAll(response.Body)    if err != nil {        log.Fatal(err)    }    fmt.Printf("Body:\n%s", text)}任何建议,包括指向其他工作示例的指针,这些示例说明如何在 Go 中发出 HTTP/2 客户端请求,我们将不胜感激。
查看完整描述

1 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

首先导入"golang.org/x/net/http2"包。然后改变

transport := &http.Transport{TLSClientConfig: tlsConfig}

transport := &http2.Transport{TLSClientConfig: tlsConfig}


查看完整回答
反对 回复 2023-05-08
  • 1 回答
  • 0 关注
  • 200 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信