1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
package main
import (
"crypto/tls"
"crypto/x509"
"fmt"
"io"
"log"
"net/http"
"os"
"golang.org/x/net/http2"
)
func loadCA(caFile string) *x509.CertPool {
pool := x509.NewCertPool()
if ca, e := os.ReadFile(caFile); e != nil {
log.Fatal("ReadFile: ", e)
} else {
pool.AppendCertsFromPEM(ca)
}
return pool
}
func main() {
c := &http.Client{
// 这个会拿到 h2的协议
Transport: &http2.Transport{
TLSClientConfig: &tls.Config{RootCAs: loadCA("../serve.crt")},
AllowHTTP: true,
},
// 启用下面这个注释的就是 https 的协议
// Transport: &http.Transport{
// TLSClientConfig: &tls.Config{RootCAs: loadCA("../serve.crt")},
// },
}
if resp, e := c.Get("https://localhost:443/"); e != nil {
log.Fatal("http.Client.Get: ", e)
} else {
defer resp.Body.Close()
io.Copy(os.Stdout, resp.Body)
fmt.Printf("Got response %d: %s \n", resp.StatusCode, resp.Proto)
}
}
|