Golang https
1. golang https 请求怎么跳过证书验证, 两种方法
发起 https 请求简单方法:
package main
import (
"log"
"net/http"
)
func main() {
var resp, err = http.Get("https://www.baidu.com")
if err != nil {
log.Fatalln(err)
}
defer resp.Body.Close()
log.Println(resp.Status)
}
1.1. 使用原有 http Client
方法 1
注意, 这里方便演示直接设置了 http 包默认的 http Client 了。
package main
import (
"crypto/tls"
"log"
"net/http"
)
func main() {
http.DefaultClient.Transport = &http.Transport{
TLSClientConfig: &tls.Config{
InsecureSkipVerify: true,
},
}
var resp, err = http.Get("https://www.baidu.com")
if err != nil {
log.Fatalln(err)
}
defer resp.Body.Close()
log.Println(resp.Status)
}
方法 2
package main
import (
"crypto/tls"
"crypto/x509"
"log"
"net/http"
)
func main() {
http.DefaultClient.Transport = &http.Transport{
TLSClientConfig: &tls.Config{
VerifyPeerCertificate: func(rawCerts [][]byte, verifiedChains [][]*x509.Certificate) error {
return nil
},
},
}
var resp, err = http.Get("https://www.baidu.com")
if err != nil {
log.Fatalln(err)
}
defer resp.Body.Close()
log.Println(resp.Status)
}
1.2. 使用新 http Client
方法 1
package main
import (
"crypto/tls"
"log"
"net/http"
)
func main() {
var cli = http.Client{}
cli.Transport = &http.Transport{
TLSClientConfig: &tls.Config{
InsecureSkipVerify: true,
},
}
var resp, err = cli.Get("https://www.baidu.com")
if err != nil {
log.Fatalln(err)
}
defer resp.Body.Close()
log.Println(resp.Status)
}
方法 2
package main
import (
"crypto/tls"
"crypto/x509"
"log"
"net/http"
)
func main() {
var cli = http.Client{}
cli.Transport = &http.Transport{
TLSClientConfig: &tls.Config{
InsecureSkipVerify: true,
},
}
cli.Transport = &http.Transport{
TLSClientConfig: &tls.Config{
VerifyPeerCertificate: func(rawCerts [][]byte, verifiedChains [][]*x509.Certificate) error {
return nil
},
},
}
var resp, err = cli.Get("https://www.baidu.com")
if err != nil {
log.Fatalln(err)
}
defer resp.Body.Close()
log.Println(resp.Status)
}