【发布时间】:2022-01-20 11:49:37
【问题描述】:
我在尝试为 Go 中的 Gorilla Mux 路线设置响应代码时遇到了困难。如果我有一个非常简单的路线设置为
// dummy test route
router.HandleFunc("/test", func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Access-Control-Allow-Headers", "*")
w.Header().Set("Access-Control-Allow-Origin", "*")
w.Header().Set("Access-Control-Allow-Methods", "POST, GET")
w.Header().Set("Content-Type", "application/json")
fmt.Fprintf(w, "{\"message\":\"OK\"}")
}).Methods("POST")
它似乎工作正常并返回 200 的状态,这很好,但如果我尝试手动设置响应代码,如下所示。
// dummy test route
router.HandleFunc("/test", func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusOK) // added this to test
w.Header().Set("Access-Control-Allow-Headers", "*")
w.Header().Set("Access-Control-Allow-Origin", "*")
w.Header().Set("Access-Control-Allow-Methods", "POST, GET")
w.Header().Set("Content-Type", "application/json")
fmt.Fprintf(w, "{\"message\":\"OK\"}")
}).Methods("POST")
然后它似乎已将响应代码设置为 200,但在发出 REST 请求时它仍然作为错误出现
POST *url*/test net::ERR_FAILED 200
我不确定这是为什么,但这不是设置响应代码的正确方法吗?
【问题讨论】:
-
在响应操作结束时设置状态码。因此,在您设置所有其他标题之后。
标签: go gorilla mux http-response-codes