使用httputil和gorilla / mux反向代理

问题描述 投票:0回答:1

我一直试图用httputil.NewSingleHostReverseProxy(*Url)在内部反转代理我的一些请求我注意到gorilla mux对此并不满意所以我发现了一个解决GET请求问题的在线修复程序。但是,似乎GET是唯一可以正确反向代理的请求。

u = generated URL with url.Parse

api.Path("/feature").Methods("POST").HandlerFunc(handler(httputil.NewSingleHostReverseProxy(u)))

func handler(p *httputil.ReverseProxy) func(http.ResponseWriter, *http.Request) {
    return func(w http.ResponseWriter, r *http.Request) {
        r.URL.Path = mux.Vars(r)["path"]
        p.ServeHTTP(w, r)
    }
}

这适用于GET请求,但在发送POSTPATCH时,接收http方法设置为GET。我已经确认代理人的r.Method一端是POST而另一端是GET。有没有人以前遇到过这个问题,或者知道是什么原因引起的?

http go reverse-proxy gorilla mux
1个回答
0
投票

这个错误是由路由返回301仍然不清楚的原因造成的。 ReverseProxy在301,302,303上的回退行为是支持RFC 2616

https://github.com/golang/go/issues/18570这将重写方法改为GET

© www.soinside.com 2019 - 2024. All rights reserved.