Rumah > Artikel > pembangunan bahagian belakang > Cara meminta https dalam golang
Dengan populariti Internet dan pengembangan berterusan skop aplikasinya, data kami semakin memerlukan perlindungan keselamatan. Oleh itu, apabila membuat permintaan http, banyak laman web menggunakan protokol https untuk menghantar data. Jadi, bagaimana untuk melaksanakan permintaan ke laman web https di golang? Artikel ini akan memperkenalkan anda kepada pelaksanaan golang meminta https.
1. Apakah itu https
HTTPS (Hyper Text Transfer Protocol over Secure Socket Layer), yang menambah sokongan untuk protokol SSL (Secure Sockets Layer) berdasarkan HTTP, jadi ia adalah juga dipanggil HTTP melalui SSL. SSL menggunakan sijil untuk membuktikan identiti pihak yang satu lagi dan menyediakan keselamatan untuk komunikasi antara kedua-dua pihak.
2. Pelaksanaan permintaan https dalam golang
Dalam golang, anda boleh menggunakan kaedah yang disediakan dalam perpustakaan net/http untuk melaksanakan permintaan ke laman web https. Kami boleh melaksanakan permintaan https mudah melalui contoh berikut:
package main import ( "io/ioutil" "net/http" "fmt" ) func main() { tr := &http.Transport{ TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, } client := &http.Client{Transport: tr} resp, err := client.Get("https://www.example.com") if err != nil { fmt.Println(err) return } defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) if err != nil { fmt.Println(err) return } fmt.Println(string(body)) }
Dalam kod di atas, kami menggunakan kaedah Klien dalam pakej net/http untuk mencipta klien http. Perlu diingat bahawa apabila membuat permintaan https, kami perlu melakukan beberapa pemprosesan pada konfigurasi klien TLS.
3. Isu keselamatan dalam permintaan https
Walaupun permintaan https boleh dibuat melalui kaedah di atas, kami perlu ambil perhatian bahawa apabila meminta https, disebabkan penghantaran maklumat peribadi yang terlibat, Kami memerlukan untuk memastikan keselamatan dan kebolehpercayaan permintaan.
Dalam contoh kod di atas, kami melangkau proses pengesahan sijil dengan menetapkan atribut InsecureSkipVerify dalam konfigurasi klien TLS kepada benar, dengan itu memintas pengesahan identiti pelayan. Walaupun kaedah ini boleh mengelakkan masalah tidak dapat meminta laman web https kerana kegagalan pengesahan sijil, ia sangat berbahaya dari perspektif keselamatan. Oleh itu, kami mengesyorkan menggunakan kaedah yang disediakan dalam pustaka sijil terbina dalam golang untuk mengurus sijil dan mengesahkan keselamatan permintaan https melalui sijil. Berikut ialah contoh kod yang menggunakan sijil untuk mengesahkan identiti pelayan:
package main import ( "crypto/tls" "crypto/x509" "io/ioutil" "net/http" "fmt" ) func main() { certPath := "cert.pem" keyPath := "key.pem" cert, err := tls.LoadX509KeyPair(certPath, keyPath) if err != nil { fmt.Println(err) return } certPool := x509.NewCertPool() caCertPath := "ca.crt" caCrt, err := ioutil.ReadFile(caCertPath) if err != nil { fmt.Println(err) return } certPool.AppendCertsFromPEM(caCrt) tr := &http.Transport{ TLSClientConfig: &tls.Config{ Certificates: []tls.Certificate{cert}, RootCAs: certPool, }, } client := &http.Client{Transport: tr} resp, err := client.Get("https://www.example.com") if err != nil { fmt.Println(err) return } defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) if err != nil { fmt.Println(err) return } fmt.Println(string(body)) }
Dalam kod di atas, kami memuatkan sijil melalui kaedah tls.LoadX509KeyPair, cipta kumpulan sijil melalui x509. kaedah NewCertPool dan tambah sijil CA ke dalam kumpulan sijil. Kami kemudian menggunakan sifat Sijil dalam tls.Config untuk menentukan sijil yang digunakan oleh pelanggan, dan sifat RootCAs untuk menentukan kumpulan sijil yang digunakan oleh pelanggan.
4. Ringkasan
Artikel ini memperkenalkan kaedah melaksanakan permintaan https dalam golang dan isu keselamatan yang perlu diberi perhatian. Walaupun kami boleh memudahkan permintaan https dengan melangkau pengesahan sijil, atas sebab keselamatan, kami mengesyorkan menggunakan sijil untuk mengesahkan identiti pelayan bagi memastikan keselamatan permintaan tersebut. Saya harap ia dapat membantu semua orang yang mempunyai masalah permintaan https yang dihadapi dalam pembangunan golang.
Atas ialah kandungan terperinci Cara meminta https dalam golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!