Cara membuat permintaan menggunakan protokol HTTPS dalam bahasa Go

PHPz
Lepaskan: 2023-04-14 15:00:47
asal
1856 orang telah melayarinya

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)
    }
Salin selepas log masuk

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))
Salin selepas log masuk

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))
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!