我收到此错误,无论我以哪种方式设置内容类型并编写状态代码。我真的不知道为什么...
在我看来,这是一项非常平凡的任务 - 我只想设置内容类型和http状态代码。服务器确实可以正常工作,它为网页提供服务很好,但是每次我请求该端点/路径时,它都会将该消息记录到终端。
错误
http: superfluous response.WriteHeader call from main.indexHandler (server.go:49)
法典
package main
import (
"context"
"log"
"net/http"
"os"
"os/signal"
"time"
"github.com/gorilla/mux"
)
func main() {
r := mux.NewRouter()
fs := http.FileServer(http.Dir("./static"))
r.PathPrefix("/assets/").Handler(http.StripPrefix("/assets/", fs))
r.HandleFunc("/", indexHandler).Methods("GET")
server := &http.Server{
Addr: "0.0.0.0:8080",
Handler: r,
}
go func() {
if err := server.ListenAndServe(); err != nil {
log.Fatal("Unable to start the server")
}
}()
c := make(chan os.Signal, 1)
signal.Notify(c, os.Interrupt)
<-c
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
if err := server.Shutdown(ctx); err != nil {
log.Fatal("Unable to gracefully shutdown the server")
}
}
func indexHandler(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "text/html")
w.WriteHeader(http.StatusOK)
http.ServeFile(w, r, "./static/index.html")
}
茅侃侃
相关分类