Maison >développement back-end >Golang >Comment puis-je définir correctement les cookies à l'aide du package net/http de Go ?

Comment puis-je définir correctement les cookies à l'aide du package net/http de Go ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-10 04:43:18769parcourir

How Can I Correctly Set Cookies Using Go's net/http Package?

Définition des cookies avec Net/HTTP à partir du serveur

Cet article aborde la question de la configuration des cookies dans Go à l'aide du package net/http. En rencontrant des difficultés, vous avez peut-être eu recours à des recherches en ligne, mais vous avez obtenu des résultats insatisfaisants.

Examinons le code que vous avez fourni :

package main

import (
    "io"
    "net/http"
    "time"
)

func indexHandler(w http.ResponseWriter, req *http.Request) {
    expire := time.Now().AddDate(0, 0, 1)
    cookie := http.Cookie{"test", "tcookie", "/", "www.domain.com", expire, expire.Format(time.UnixDate), 86400, true, true, "test=tcookie", []string{"test=tcookie"}}
    req.AddCookie(&cookie)
    io.WriteString(w, "Hello world!")
}

func main() {
    http.HandleFunc("/", indexHandler)
    http.ListenAndServe(":80", nil)
}

Comme souligné dans la réponse que vous avez reçue, vous semblez définir le cookie sur la demande plutôt que sur la réponse. A cet effet, net/http propose une méthode appelée SetCookie :

func SetCookie(w ResponseWriter, cookie *Cookie)

Pour définir un cookie, vous devez utiliser la fonction SetCookie de la manière suivante :

func indexHandler(w http.ResponseWriter, req *http.Request) {
    expire := time.Now().AddDate(0, 0, 1)
    cookie := http.Cookie{
        Name:    "test",
        Value:   "tcookie",
        Path:    "/",
        Domain:  "www.domain.com",
        Expires: expire,
        MaxAge:  86400, // duration in seconds.
        Secure:  true,
        HttpOnly: true,
    }
    http.SetCookie(w, &cookie)
    io.WriteString(w, "Hello world!")
}

En définissant le cookie sur la réponse, le navigateur recevra le cookie et le stockera en conséquence. Cela vous permettra de suivre les sessions des utilisateurs et de proposer des expériences personnalisées dans votre application Web.

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