gpt4 book ai didi

http - 使用 http.ServeFile 更改 HTTP 代码

转载 作者:IT王子 更新时间:2023-10-29 01:06:13 26 4
gpt4 key购买 nike

我正在用 Go 编写一个服务器,我目前正在实现错误页面(404、500 等)我有可以为这些错误提供服务的文件,但是如果我使用 http.ServeFile 然后我得到 HTTP 代码 200 而不是适当的代码。

有没有办法改变状态码,或者我需要为这个用例重写 http.ServeFile 吗?

最佳答案

通过阅读源代码,我看不到任何更改状态代码的方法(除了失败的方法,这意味着您将无法获得错误页面)。我认为这意味着如果提供了文件,那么它就是一个 HTTP 200,这并非完全不合理。

我建议将错误页面文件读入字符串,然后使用此方法; https://golang.org/pkg/net/http/#Error

编辑:这实际上对您来说可能还不够具体。它希望将错误消息作为纯文本,所以我的建议可能是误用。在这种情况下,您将没有任何有用的抽象来做您想做的事。

作为对评论的回应,我个人的偏好是:

func main() {
mux := http.NewServeMux()
mux.HandleFunc("/sendstrailers", func(w http.ResponseWriter, req *http.Request) {
resp := &http.Response{
StatusCode: 404,
}
resp.Write(w)
})
}

但您也可以只使用 w.WriteHeader(http.StatusForbidden) 或您喜欢的任何内容。无论您需要什么更好的套房。我的经验是在不同于多路复用器的范围内准备响应对象,因此我认为我更喜欢上面的部分(这比让辅助方法返回非结构化数据然后写入响应编写器更有意义)。

关于http - 使用 http.ServeFile 更改 HTTP 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34073377/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com