>백엔드 개발 >Golang >웹 브라우저를 통해 액세스할 때 Go HandleFunc가 두 번 호출되는 이유는 무엇입니까?

웹 브라우저를 통해 액세스할 때 Go HandleFunc가 두 번 호출되는 이유는 무엇입니까?

DDD
DDD원래의
2024-12-17 07:55:25181검색

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

HandleFunc가 두 번 호출됨

간단한 Go 웹 서버 예에서 다음을 통해 포트 8000에 액세스할 때 HandleFunc가 두 번 호출되는 이상한 문제가 발생합니다. 웹 브라우저. 이는 단일 호출만 트리거하는 컬을 사용할 때 예상되는 동작과 다릅니다.

문제 공개

문제를 해결하기 위해 로깅 문을 구현하면 다음과 같이 됩니다. /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가 두 번 호출되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.