HandleFunc invoqué deux fois
Dans un exemple simple de serveur Web Go, un problème déroutant survient lorsque HandleFunc est appelé deux fois lors de l'accès au port 8000 via un navigateur Internet. Cela diffère du comportement attendu lors de l'utilisation de curl, qui ne déclenche qu'un seul appel.
Dévoilement du problème
Lors de l'implémentation d'une instruction de journalisation pour résoudre le problème, il devient Il est évident qu'une demande supplémentaire est faite par le navigateur pour /favicon.ico. Cette icône est généralement affichée dans la barre d'adresse du navigateur.
Résolution
Pour résoudre cette incompatibilité dans le traitement de la demande, accusez simplement réception de la demande de /favicon.ico dans le HandleFunc. Si aucune action n'est nécessaire pour cette requête spécifique, une réponse vide par défaut peut suffire.
Voici le code modifié :
package main import ( "io" "log" "net/http" ) func hello(w http.ResponseWriter, r *http.Request) { io.WriteString(w, "Hello world!") log.Println("hello.") } func favicon(w http.ResponseWriter, r *http.Request) { http.NotFound(w, r) } func main() { mux := http.NewServeMux() mux.HandleFunc("/", hello) mux.HandleFunc("/favicon.ico", favicon) http.ListenAndServe(":8000", mux) }
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!