使用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
请求,但在发送POST
或PATCH
时,接收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 和 CockroachDB 编写可维护 RESTful API