Maison >développement back-end >Golang >Comment gérer les cookies pour les demandes de clients HTTP authentifiés dans Go ?

Comment gérer les cookies pour les demandes de clients HTTP authentifiés dans Go ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-10 07:15:021055parcourir

How to Manage Cookies for Authenticated HTTP Client Requests in Go?

Demandes de client HTTP authentifiées depuis Go

Dans le contexte des requêtes de client HTTP qui nécessitent une authentification, un problème courant survient lorsque les requêtes suivantes échouent avec une erreur d'accès refusé 401. Explorons une solution Golang à ce problème.

Dans l'extrait de code fourni, le client s'authentifie avec succès auprès du serveur à l'aide de l'authentification HTTP de base, mais est confronté à des difficultés lors de la demande ultérieure pour récupérer les détails de l'utilisateur. Pour résoudre ce problème, la solution réside dans la création d'un pot à cookies personnalisé.

Le client HTTP de Golang ne gère pas automatiquement la gestion des cookies. Un pot à cookies est nécessaire pour stocker et gérer les cookies dans les requêtes HTTP. Le code ci-dessous définit une implémentation de pot de cookies personnalisé :

type myjar struct {
    jar map[string] []*http.Cookie
}

func (p* myjar) SetCookies(u *url.URL, cookies []*http.Cookie) {
    p.jar [u.Host] = cookies
}

func (p *myjar) Cookies(u *url.URL) []*http.Cookie {
    return p.jar[u.Host]
}

Dans la fonction principale, nous initialisons le pot de cookies personnalisé et l'attribuons au champ Jar du client :

    jar := &myjar{}
    jar.jar = make(map[string] []*http.Cookie)
    client.Jar = jar

En incorporant Ces changements, Golang peut gérer avec succès les cookies sur les requêtes HTTP authentifiées. Désormais, le client attachera automatiquement le cookie associé à la session authentifiée aux demandes ultérieures, garantissant ainsi que la demande de détails est traitée correctement sans l'erreur 401.

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