Avec l'amélioration de la sensibilisation à la sécurité des réseaux, de plus en plus de sites Web commencent à utiliser le protocole HTTPS pour la protection de la transmission des données. Pour pouvoir mieux interagir avec ces sites Web, nous devons apprendre à faire des requêtes en utilisant le protocole HTTPS dans le langage Go.
1. Introduction
HTTPS est une version cryptée du protocole HTTP, utilisée pour protéger la sécurité des données transmises. Le protocole HTTPS est basé sur le protocole TLS/SSL et sa dernière version est TLS1.3. Sous le protocole HTTPS, le certificat numérique côté serveur peut vérifier l'identité du client et empêcher les attaques de l'homme du milieu.
La bibliothèque standard du langage Go fournit le package net/http et le package crypto/tls pour prendre en charge les protocoles HTTP et HTTPS, parmi lesquels le package crypto/tls est utilisé pour créer des connexions TLS.
2. Requête HTTP
Utilisez la fonction http.NewRequest pour créer une requête HTTP en langage Go. Fournissez la méthode de requête (GET, POST, PUT, etc.), l'URL et le corps de la requête facultatif.
Exemple :
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) }
Le code ci-dessus crée une requête GET et l'envoie à l'URL spécifiée. Nous pouvons lire le contenu de la réponse via resp.Body. Veuillez noter que lors de l'utilisation de cette version du code, nous n'avons pas envisagé d'utiliser le protocole HTTPS. Cette question sera abordée dans la section suivante.
3. Requête HTTPS
Afin d'établir une connexion HTTPS, nous devons utiliser les fonctions du package crypto/tls.
Exemple :
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))
La variable InsecureSkipVerify est définie sur true, indiquant que nous ne vérifions pas l'identité du serveur distant, ce qui est utile à des fins de test. En fait, cette option active une fonctionnalité appelée OCSP Stapling, qui est utilisée pour empêcher les attaques de l'homme du milieu.
4. Client HTTPS
Le package crypto/tls fournit son propre type de client, que nous pouvons créer et utiliser nous-mêmes pour établir des connexions HTTPS.
Exemple :
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. Conclusion
Dans cet article, nous avons appris à utiliser le protocole HTTPS pour faire des requêtes dans le langage Go. Bien que nous puissions désactiver la vérification des certificats via l'option InsecureSkipVerify, dans un environnement de production réel, nous devons suivre les meilleures pratiques de sécurité et utiliser la vérification des certificats pour garantir la sécurité des connexions HTTPS.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!