Rumah >pembangunan bahagian belakang >Golang >Mengapakah Go HandleFunc saya dipanggil dua kali apabila diakses melalui pelayar web?
HandleFunc Invoked Twice
Dalam contoh pelayan web Go yang mudah, isu yang membingungkan timbul apabila HandleFunc dipanggil dua kali apabila mengakses port 8000 melalui pelayar web. Ini berbeza daripada gelagat yang dijangkakan apabila menggunakan curl, yang mencetuskan hanya satu seruan.
Menyingkap Isu
Setelah melaksanakan pernyataan pengelogan untuk menyelesaikan masalah, ia menjadi jelas bahawa permintaan tambahan dibuat oleh penyemak imbas untuk /favicon.ico. Ikon ini biasanya dipaparkan dalam bar alamat penyemak imbas.
Penyelesaian
Untuk menyelesaikan ketidakpadanan ini dalam pemprosesan permintaan, hanya akui permintaan untuk /favicon.ico dalam HandleFunc. Jika tiada tindakan diperlukan untuk permintaan khusus ini, respons kosong lalai sudah memadai.
Berikut ialah kod yang diubah suai:
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) }
Atas ialah kandungan terperinci Mengapakah Go HandleFunc saya dipanggil dua kali apabila diakses melalui pelayar web?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!