我在嘗試為 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
我不確定這是為什么,但這不是設定回應代碼的正確方法嗎?
uj5u.com熱心網友回復:
當WriteHeader函式寫入回應并重繪 它時,您必須在最后撰寫狀態代碼。
// 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")
w.WriteHeader(http.StatusOK) // Set your code here, after setting your headers
fmt.Fprintf(w, "{\"message\":\"OK\"}")
}).Methods("POST")
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/385976.html
