为什么我会收到与编写响应标头相关的此错误/警告?

我收到此错误,无论我以哪种方式设置内容类型并编写状态代码。我真的不知道为什么...


在我看来,这是一项非常平凡的任务 - 我只想设置内容类型和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")

}


慕桂英546537
浏览 111回答 1
1回答

茅侃侃

在func indexHandler(w http.ResponseWriter, r *http.Request) {&nbsp; &nbsp; w.Header().Set("Content-Type", "text/html")&nbsp; &nbsp; w.WriteHeader(http.StatusOK)&nbsp; &nbsp; http.ServeFile(w, r, "./static/index.html")}您不需要该电话。 将根据其在提供文件时的成功设置状态。w.WriteHeaderhttp.ServeFile如果要了解此错误消息是如何产生的,请查看该方法的实现以及如果标头已写入,它的作用。WriteHeader
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go