使用httputil和gorilla / mux反向代理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用httputil和gorilla / mux反向代理相关的知识,希望对你有一定的参考价值。

我一直试图用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。有没有人以前遇到过这个问题,或者知道是什么原因引起的?

答案

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

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

以上是关于使用httputil和gorilla / mux反向代理的主要内容,如果未能解决你的问题,请参考以下文章

GolangWeb 入门 08 集成 Gorilla Mux

Gorilla Mux 和 GORM 失败

使用 Gorilla Mux 和 CockroachDB 编写可维护 RESTful API

使用 Gorilla MUX 和 Negroni 子路由中间件

Gorilla mux 可选查询值

我应该如何用 gorilla/mux 解决这个导入问题?