HandleFunc가 여러 번 트리거됨: 조사 및 해결
웹 서버의 맥락에서 HandleFunc 함수는 수신 처리에 중요한 역할을 합니다. HTTP 요청. 그러나 발생할 수 있는 일반적인 문제는 단일 요청에 대해 함수가 두 번 호출되는 것입니다. 이 동작은 프로그램이 카운터 증가에 의존하거나 요청 수에 따라 작업을 수행하는 경우 특히 문제가 될 수 있습니다.
제공된 코드 조각에서 보여주는 문제를 자세히 살펴보겠습니다. 웹 브라우저에 포트 8000을 로드하면 hello 함수가 두 번 호출됩니다. 이 동작의 당혹스러운 특성은 함수를 한 번만 호출하는 컬을 사용할 때 분명해집니다.
코드 내에서 로깅 메커니즘을 설정하면 브라우저가 /favicon.ico도 요청한다는 것을 알게 됩니다. 이 요청은 탭이나 주소 표시줄에 웹사이트를 나타내는 작은 아이콘이나 로고를 표시하기 위해 브라우저에 의해 시작됩니다.
문제에 대한 해결책은 파비콘에 대한 요청을 승인하고 적절하게 처리하는 데 있습니다. 다음은 이러한 요구 사항을 해결하는 업데이트된 코드 버전입니다.
package main import ( "fmt" "io" "log" "net/http" ) func hello(w http.ResponseWriter, r *http.Request) { if r.RequestURI == "/favicon.ico" { w.WriteHeader(http.StatusNotFound) return } io.WriteString(w, "Hello world!") log.Println("hello.") } func main() { mux := http.NewServeMux() mux.HandleFunc("/", hello) http.ListenAndServe(":8000", mux) }
이 수정을 통해 파비콘 요청이 정상적으로 처리되어 각 웹페이지 요청에 대해 hello 함수가 한 번만 호출됩니다.
위 내용은 Go HandleFunc가 브라우저 요청당 두 번 트리거되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!