我一直試圖解決weird problem很長時間了。在通過大量的角碼之後,我通過Charles向我的服務器記錄請求時發現了一些奇怪的事情。Go Web服務器自動重定向POST請求
當我張貼到一個網址/myurl
請求從來沒有真正命中我的服務器。相反,它得到一個301響應,然後GET請求發送我的服務器。
這令人難以置信的令人費解。有其他人遇到這個問題嗎?我已經上傳了我對Charles感興趣的Charles日誌的屏幕截圖。
只是作爲參考,這是我的服務器上的樣子:
type FormStruct struct {
Test string
}
func PHandler(w http.ResponseWriter, r *http.Request) {
var t FormStruct
req, _ := httputil.DumpRequest(r, true)
log.Println(string(req))
log.Println(r.Method) // GET
log.Println(r.Body)
decoder := json.NewDecoder(r.Body)
err := decoder.Decode(&t)
log.Println("Decoding complete")
if err != nil {
log.Println("Error")
panic(err.Error()+"\n\n")
}
log.Println(t.Test)
w.Write([]byte("Upload complete, no errors"))
}
func main() {
http.HandleFunc("/myurl/", PHandler)
fmt.Println("Go Server listening on port 8001")
http.ListenAndServe(":8001", nil)
}
爲什麼ServeMux重定向得到什麼?爲什麼不使用原始請求的方法?更重要的是,有沒有辦法讓這個重定向執行POST? – dopatraman
@dopatraman查看編輯答案(實際上將它添加到答案中,因爲它對其他人來說也是信息)。 – icza
謝謝。如果您將此答案添加到此主題(http://stackoverflow.com/questions/36295758/http-post-method-is-actally-sending-a-get),我也會將其標記爲正確。 – dopatraman