首頁 > 後端開發 > Golang > 為什麼我的 Go HandleFunc 在透過 Web 瀏覽器存取時會被呼叫兩次?

為什麼我的 Go HandleFunc 在透過 Web 瀏覽器存取時會被呼叫兩次?

DDD
發布: 2024-12-17 07:55:25
原創
178 人瀏覽過

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

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板