dongye9228 2018-07-04 13:02
浏览 98

具有httputil和gorilla / mux的反向代理

I've been trying to reverse proxy some of my requests internally with httputil.NewSingleHostReverseProxy(*Url) I noticed that gorilla mux is not happy with this so I found a fix online that solved the issue for GET requests. However, it seems like like GET is the only request that will be reverse proxied correctly.

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)
    }
}

This works fine for GET requests, but when sending a POST or PATCH the receiving http method is set as GET. I have confirmed that the proxy's r.Method is POST on one end and GET on the other. Has anyone encountered this issue before, or know what could be causing this?

  • 写回答

1条回答 默认 最新

  • dquh37673 2018-07-04 20:02
    关注

    This error was caused by the route returning a 301 still unclear why. ReverseProxy's fallback behavior on 301, 302, 303 is to support RFC 2616

    https://github.com/golang/go/issues/18570 This rewrites the Method to GET

    评论

报告相同问题?

悬赏问题

  • ¥20 java在应用程序里获取不到扬声器设备
  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
  • ¥60 许可证msc licensing软件报错显示已有相同版本软件,但是下一步显示无法读取日志目录。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
  • ¥15 前置放大电路与功率放大电路相连放大倍数出现问题
  • ¥30 关于<main>标签页面跳转的问题
  • ¥80 部署运行web自动化项目
  • ¥15 腾讯云如何建立同一个项目中物模型之间的联系