HandleFunc 呼叫兩次
在一個簡單的Go Web 伺服器範例中,出現了一個令人費解的問題,即透過存取埠8000 時HandleFunc 被呼叫兩次網頁瀏覽器。這與使用curl時的預期行為不同,curl僅觸發一次呼叫。
揭示問題
在實現日誌記錄語句來解決問題後,它變成顯然,瀏覽器對 /favicon.ico 發出了額外的請求。此圖示通常顯示在瀏覽器的網址列中。
解決方案
要解決請求處理中的這種不匹配問題,只需在中確認 /favicon.ico 的請求即可HandleFunc。如果此特定請求不需要執行任何操作,則預設的空響應就足夠了。
以下是修改後的程式碼:
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) }
以上是為什麼我的 Go HandleFunc 在透過 Web 瀏覽器存取時會被呼叫兩次?的詳細內容。更多資訊請關注PHP中文網其他相關文章!