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 ?

Comment puis-je faire en sorte que mon client Go suive les redirections HTTP tout en conservant les cookies, comme cURL ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-05 21:24:02303parcourir

How can I make my Go client follow HTTP redirects while retaining cookies, similar to cURL?

Go : gestion des redirections assistées par cookies

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.

Énoncé du problème

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 ?

Solution

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn