我正在尋找在 Go 中制作代理網(wǎng)關??焱瓿闪?!仍然缺少一件事:將整個客戶端響應發(fā)送到服務器請求。我有自己的 HTTP 處理程序:func (f HttpHandlerFunc) ServeHTTP(w http.ResponseWriter, r *http.Request) { if rurl, err := getOriginurl(r.RequestURI); err == nil { [...] client := &Http.Client{} r.URL = rurl r.RequestURI = "" resp, err := client.Do(r) if err == nil { for k, vs := range resp.Header { for _, v := range vs { w.Header().Set(k, v) } } w.WriteHeader(resp.StatusCode) if responseData,err := ioutil.ReadAll(resp.Body); err == nil { w.Write(responseData) } } }}func getOriginurl(request string) *url.URL { {...} // Would return an *url.URL with : http://127.0.0.1:8080/{requestURI}}我正在尋找一種方法來優(yōu)化解析客戶端對 ResponseWriter 的響應的方式。實際上我的問題是:如何詳盡地將 Response 類型解析為 ResponseWriter ?
1 回答

慕妹3242003
TA貢獻1824條經(jīng)驗 獲得超6個贊
您可以使用httputil.NewSingleHostReverseProxy代替您自己的 HTTP 客戶端邏輯。
httputil.NewSingleHostReverseProxy(rurl).ServeHTTP(w, r)
- 1 回答
- 0 關注
- 156 瀏覽
添加回答
舉報
0/150
提交
取消