Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara membuat permintaan menggunakan protokol HTTPS dalam bahasa Go

Cara membuat permintaan menggunakan protokol HTTPS dalam bahasa Go

PHPz
PHPzasal
2023-04-14 14:59:361859semak imbas

Dengan peningkatan kesedaran keselamatan rangkaian, semakin banyak tapak web mula menggunakan protokol HTTPS untuk perlindungan penghantaran data. Untuk dapat berinteraksi dengan lebih baik dengan tapak web ini, kita perlu belajar cara membuat permintaan menggunakan protokol HTTPS dalam bahasa Go.

1. Pengenalan

HTTPS ialah versi protokol HTTP yang disulitkan, digunakan untuk melindungi keselamatan data yang dihantar. Protokol HTTPS adalah berdasarkan protokol TLS/SSL, dan versi terkininya ialah TLS1.3. Di bawah protokol HTTPS, sijil digital bahagian pelayan boleh menyemak identiti pelanggan dan menghalang serangan orang di tengah.

Pustaka standard bahasa Go menyediakan pakej net/http dan pakej crypto/tls untuk menyokong protokol HTTP dan HTTPS, antaranya pakej crypto/tls digunakan untuk membuat sambungan TLS.

2. Permintaan HTTP

Gunakan fungsi http.NewRequest untuk membuat permintaan HTTP dalam bahasa Go. Sediakan kaedah permintaan (GET, POST, PUT, dll.), URL dan badan permintaan pilihan.

Contoh:

    req, err := http.NewRequest("GET", "http://www.example.com", nil)
    if err != nil {
        log.Fatalln(err)
    }

    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        log.Fatalln(err)
    }

Kod di atas mencipta permintaan GET dan menghantarnya ke URL yang ditentukan. Kita boleh membaca kandungan respons melalui resp.Body. Sila ambil perhatian bahawa apabila menggunakan versi kod ini, kami tidak mengambil kira penggunaan protokol HTTPS. Isu ini akan ditangani dalam bahagian seterusnya.

3. Permintaan HTTPS

Untuk mewujudkan sambungan HTTPS, kita perlu menggunakan fungsi dalam pakej crypto/tls.

Contoh:

    http.DefaultTransport.(*http.Transport).TLSClientConfig = &tls.Config{InsecureSkipVerify: true}

    resp, err := http.Get("https://www.example.com")
    if err != nil {
        log.Fatalln(err)
    }
    defer resp.Body.Close()

    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        log.Fatalln(err)
    }

    fmt.Println(string(body))

Pembolehubah InsecureSkipVerify ditetapkan kepada benar, menunjukkan bahawa kami tidak mengesahkan identiti pelayan jauh, yang berguna untuk tujuan ujian. Malah, pilihan ini menghidupkan ciri yang dipanggil OCSP Stapling, yang digunakan untuk menghalang serangan orang-dalam-tengah.

4. Pelanggan HTTPS

Pakej crypto/tls menyediakan jenis kliennya sendiri, yang boleh kami cipta dan gunakan sendiri untuk mewujudkan sambungan HTTPS.

Contoh:

    tr := &http.Transport{
        TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
    }

    client := &http.Client{Transport: tr}

    resp, err := client.Get("https://www.example.com")
    if err != nil {
        log.Fatalln(err)
    }
    defer resp.Body.Close()

    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        log.Fatalln(err)
    }

    fmt.Println(string(body))

5 Kesimpulan

Dalam artikel ini, kami mempelajari cara menggunakan protokol HTTPS untuk membuat permintaan dalam bahasa Go. Walaupun kami boleh mematikan pengesahan sijil melalui pilihan InsecureSkipVerify, dalam persekitaran pengeluaran sebenar, kami harus mengikut amalan terbaik keselamatan dan menggunakan pengesahan sijil untuk memastikan keselamatan sambungan HTTPS.

Atas ialah kandungan terperinci Cara membuat permintaan menggunakan protokol HTTPS dalam bahasa Go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn