Rumah >pembangunan bahagian belakang >Golang >Mengapakah Go HandleFunc saya dipanggil dua kali apabila diakses melalui pelayar web?

Mengapakah Go HandleFunc saya dipanggil dua kali apabila diakses melalui pelayar web?

DDD
DDDasal
2024-12-17 07:55:25183semak imbas

Why is my Go HandleFunc invoked twice when accessed via a web browser?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn