我一直试图解决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