2015-10-30 1 views
0

Je suis un simple web server example dans Go.HandleFunc étant appelé deux fois

J'ai inséré une déclaration log afin que le code résultant ressemble ci-dessous:

package main 

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

func hello(w http.ResponseWriter, r *http.Request) { 
    io.WriteString(w, "Hello world!") 
    log.Println("hello.") 
} 

func main() { 
    mux := http.NewServeMux() 
    mux.HandleFunc("/", hello) 
    http.ListenAndServe(":8000", mux) 
} 

Le problème est que chaque fois que je charge le port 8000 dans mon navigateur web, cette fonction est appelée deux fois. C'est un problème parce que j'ai l'intention d'incrémenter un compteur à chaque visite de page. Avec ce comportement, le compteur est incrémenté deux fois. OTOH, si je fais curl localhost:8000, il est appelé qu'une seule fois. Je pense que c'est quelque chose de vraiment idiot que je suis absent ici.

Répondre

10

Enregistrez simplement les demandes. Vous vous rendrez compte que votre navigateur demande également /favicon.ico. Pour plus d'informations, voir https://en.wikipedia.org/wiki/Favicon pour plus d'informations.

1

Comme le dit Didier, c'est votre navigateur qui essaie de charger le favicon. Vous pouvez empêcher cela en ajoutant ce code à la tête < >:

<link rel="icon" type="image/png" href="data:image/png;base64,iVBORw0KGgo=">