【发布时间】:2018-01-14 18:44:20
【问题描述】:
我需要一个自定义的未找到的 html 页面。这是我尝试过的:
package main
import (
"net/http"
"github.com/julienschmidt/httprouter"
)
func main() {
r := httprouter.New()
r.NotFound = http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(404)
http.ServeFile(w, r, "files/not-found.html")
})
http.ListenAndServe(":8000", r)
}
我有w.WriteHeader(404)这一行来确保状态码是404,但是上面的代码给出了错误:
http:多个响应。WriteHeader 调用
没有w.WriteHeader(404)这行没有错误,页面显示正确,但是状态码是200,我希望是404。
【问题讨论】:
-
一种方法是模拟 w,因此它不允许在传递给 http.servefile 时将状态代码更改为 200。