English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
L'exemple de cet article décrit l'utilisation des cookies en langage Go. Partageons-le avec vous pour que vous puissiez l'utiliser comme référence, voici les détails :
Le développement web ne peut pas éviter de traiter avec les cookies. La bibliothèque http de Go fournit également des opérations sur les cookies.
type Cookie struct { Name string Value string Path string Domain string Expires time.Time RawExpires string MaxAge int Secure bool HttpOnly bool Raw string Unparsed []string }
Le champ Name est le nom du cookie, Value est sa valeur, et les Path et Domain sont la portée de stockage du cookie. Expires est la date d'expiration du cookie, si elle n'est pas définie, il s'agit d'un cookie de session, c'est-à-dire qu'il est utile pour la session du navigateur, et il est supprimé dès que le navigateur est fermé.
Définir le Cookie
le cookie est un contenu de l'en-tête, par conséquent, il est possible d'utiliser la méthode Header de la réponse pour définir le cookie.
*http.Request) { c1 Value: \ HttpOnly: true, } c2 Value: \ HttpOnly: true, } w.Header().Set("Set-Cookie", c1.String()) w.Header().Add("Set-Cookie", c2.String()) }
Ici, il est également possible de tester la différence entre les méthodes Set et Add. Bien sûr, comme pour le téléversement de fichiers, Go fournit des fonctions utilitaires courantes.
http.SetCookie(w, &c1) http.SetCookie(w, &c2)
La méthode SetCookie de http peut également définir un cookie, il n'est donc pas nécessaire de se soucier de l'ordre de Set et Add, bien sûr, le second paramètre est un pointeur sur un objet Cookie. Une fois le cookie défini, il faut ensuite lire le cookie.
Lecture du cookie
Il y a également de nombreuses méthodes pour lire un cookie, le cookie est encapsulé dans l'en-tête, bien sûr, il peut être traité par la méthode header.
func getCookieHandler(w http.ResponseWriter, r *http.Request) { h := r.Header["Cookie"] fmt.Fprintln(w, h) }
On peut également utiliser la méthode Request sans méthode Header :
func getCookieHandler(w http.ResponseWriter, r *http.Request) { c1, err := r.Cookie("first_cookie") if err != nil{ fmt.Fprintln(w, "Impossible d'obtenir le cookie") } cs := r.Cookies() fmt.Fprintln(w, c1) fmt.Fprintln(w, cs) }
Lors de l'accès, on peut découvrir que r.Cookie renvoie le couple clé-valeur pour une clé spécifique, tandis que r.Cookies renvoie les valeurs des couples clé-valeur de tous les cookies.
Cookie et message
Les cookies jouent de nombreux rôles, généralement pour enregistrer certaines informations du client, utilisées pour la validation de connexion de l'utilisateur. Maintenant, nous devons utiliser le cookie pour une petite fonctionnalité---Les messages. Souvent, après l'envoi d'une requête web, la réponse renvoie des données, et il est également possible de définir des messages pour guider l'utilisateur.
func setMessageHandler(w http.ResponseWriter, r *http.Request) { msg := []byte("Hello World") c := http.Cookie{ Name: "flash", Value:base64.URLEncoding.EncodeToString(msg), } http.SetCookie(w, &c) } func getMessageHandler(w http.ResponseWriter, r *http.Request) { c, err := r.Cookie("flash") if err != nil { if err == http.ErrNoCookie { fmt.Fprintln(w, "Aucun message trouvé") } } else {}} rc := http.Cookie{ Name: "flash", MaxAge: -1, Expires:time.Unix(1, 0), } http.SetCookie(w, &rc) val, _ := base64.URLEncoding.DecodeString(c.Value) fmt.Fprintln(w, string(val)) } }
La fonction setMessageHandler est simple, il s'agit de créer une instance de cookie, puis d'écrire le message dans le cookie, puis de le renvoyer au client.
getMessageHandler lit d'abord le cookie flash avec la clé, si le contenu n'est pas lu, cela signifie que le message n'existe pas, sinon il crée un autre cookie, configure son temps d'expiration ici égal à la suppression du cookie. Ensuite, il renvoie le message lu au client. Terminez la communication de messages.
Résumé
Nous avons discuté de l'application de base des cookies en Go. Actuellement, dans le développement web, les gens attachent de plus en plus d'importance à la sécurité réseau, donc la sécurité des cookies est également un contenu que les utilisateurs s'inquiètent. L'encapsulation native des cookies de Go est assez simple. La communauté de Go a développé beaucoup de roues, réalisant secure cookie, par exemple gorilla/Bibliothèque securecookie. Dans le développement réel, il peut être nécessaire d'utiliser des bibliothèques ou des paquets tiers pour accomplir des fonctions.
J'espère que ce tutoriel aidera les développeurs de langage Go.
Déclaration : Le contenu de cet article est tiré d'Internet, les droits d'auteur appartiennent à leurs propriétaires respectifs, le contenu est fourni par les utilisateurs d'Internet et téléchargé spontanément. Ce site Web ne détient pas de droits de propriété, n'a pas été édité par l'homme et n'assume aucune responsabilité juridique connexe. Si vous trouvez du contenu suspect de violation de droits d'auteur, veuillez envoyer un email à : notice#oldtoolbag.com (veuillez remplacer # par @ lors de l'envoi d'un email pour signaler une violation, et fournir des preuves pertinentes. Une fois vérifié, ce site supprimera immédiatement le contenu suspect de violation de droits d'auteur.