Maison >développement back-end >Golang >Comment puis-je faire en sorte que mon client Go suive les redirections HTTP tout en conservant les cookies, comme cURL ?
Lorsqu'une requête HTTP déclenche une redirection 302 accompagnée d'un cookie, vous pouvez rencontrer des difficultés pour garantir que votre client Go suit le nouveau emplacement tout en conservant le cookie. Cet article explore une solution à ce défi, en s'inspirant de l'outil de ligne de commande populaire cURL.
Comment pouvez-vous, dans Go, configurer votre client pour qu'il suive les redirections HTTP tout en transportant les cookies reçus, semblable aux paramètres de cURL ?
Introduisez le module Go net/http/cookiejar dans votre projet. Ce package fournit des capacités efficaces de gestion des cookies. Voici un exemple qui démontre son utilisation :
package main import ( "golang.org/x/net/publicsuffix" "io/ioutil" "log" "net/http" "net/http/cookiejar" ) func main() { // Create a CookieJar with customizable options. options := cookiejar.Options{ PublicSuffixList: publicsuffix.List, } jar, err := cookiejar.New(&options) if err != nil { log.Fatal(err) } // Instantiate an HTTP Client with the CookieJar attached. client := http.Client{Jar: jar} // Execute an HTTP request that includes a cookie. resp, err := client.Get("http://dubbelboer.com/302cookie.php") if err != nil { log.Fatal(err) } // Read the response body. data, err := ioutil.ReadAll(resp.Body) resp.Body.Close() if err != nil { log.Fatal(err) } // Print the response body, which ideally contains unique information set by the PHP script on the server. log.Println(string(data)) }
Cette solution émule la fonctionnalité de cURL en utilisant CookieJar pour stocker et transmettre des cookies entre les requêtes. Lorsque le client rencontre une redirection 302 avec un cookie, il suit automatiquement le nouvel emplacement tout en préservant la session basée sur le cookie.
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!