Go 为什么http.HandleFunc对一个请求执行两次?

Go 为什么http.HandleFunc对一个请求执行两次?,go,webserver,net-http,Go,Webserver,Net Http,我用golang构建了一个非常简单的web服务器来理解http包,但是我发现HandleFunc函数在一个请求中执行了两次,并且有一个favicon.ico我没有预料到 以下是web服务器代码: 包干管 进口 fmt 日志 net/http 串 //sayHelloName是一个基本的web功能 func sayHelloNamew http.ResponseWriter,r*http.Request{ r、 ParseForm//Parse参数 fmt.Printlnr.Form fmt.Pr

我用golang构建了一个非常简单的web服务器来理解http包,但是我发现HandleFunc函数在一个请求中执行了两次,并且有一个favicon.ico我没有预料到

以下是web服务器代码:

包干管 进口 fmt 日志 net/http 串 //sayHelloName是一个基本的web功能 func sayHelloNamew http.ResponseWriter,r*http.Request{ r、 ParseForm//Parse参数 fmt.Printlnr.Form fmt.Printlnpath,r.URL.Path fmt.Printlnscheme,r.URL.Scheme 格式打印格式[url\u long] 对于k,v:=范围r.形式{ 格式打印键,k fmt.Printlnval,strings.Joinv, } fmt.Fprintfw,您好,上网 } func main{ http.HandleFunc/,sayHelloName //log.PrintlnServe侦听http://localhost:8900/ 错误:=http.ListenAndServe:8900,无 如果错误!=零{ log.FatalListen&服务错误,错误 } } 参观http://localhost:9090/?url_long=111&url_long=222 实际产出 地图[url_long:[111 222]] 路径/ 计划 [111 222] 关键字url_long 瓦尔111222 地图[] 路径/favicon.ico 计划 [] 我不明白为什么这里有一个favicon.ico。 任何帮助都将不胜感激。

您的浏览器实际上请求了/favicon.ico。如果从shell运行curl请求,将不会看到两个HandleFunc请求

卷曲http://localhost:9090/?url_long=111&url_long=222 如果要处理/favicon.ico路径,可以执行以下操作:

func faviconPathw http.ResponseWriter,r*http.Request{ http.ServeFilew,r,path/to/favicon.ico } func main{ http.HandleFunc/favicon.ico,faviconPath }