如何在 http.ResponseWriter 上设置 HTTP 状态码

新手上路,请多包涵

如何在 http.ResponseWriter 上设置 HTTP 状态代码(例如设置为 500 或 403)?

我可以看到请求通常附有状态代码 200。

原文由 Nick H 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

使用 http.ResponseWriter.WriteHeader 。从文档中:

WriteHeader 发送带有状态代码的 HTTP 响应标头。如果未显式调用 WriteHeader,则第一次调用 Write 将触发隐式 WriteHeader(http.StatusOK)。因此显式调用 WriteHeader 主要用于发送错误代码。

例子:

 func ServeHTTP(w http.ResponseWriter, r *http.Request) {
    w.WriteHeader(http.StatusInternalServerError)
    w.Write([]byte("500 - Something bad happened!"))
}

原文由 Tim Cooper 发布,翻译遵循 CC BY-SA 4.0 许可协议

除了 WriteHeader(int) 你可以使用辅助方法 http.Error ,例如:

 func yourFuncHandler(w http.ResponseWriter, r *http.Request) {

    http.Error(w, "my own error message", http.StatusForbidden)

    // or using the default message error

    http.Error(w, http.StatusText(http.StatusNotFound), http.StatusNotFound)
}

http.Error() 和 http.StatusText() 方法是你的朋友

原文由 Yandry Pozo 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题