在使用ReverseProxy重定向Post Form之前,我想向它添加一个新值



我正在使用GOLANG编写一个有特殊要求的ReverseProxyReverseProxy工作正常。但我对特殊要求有意见用户发送Http发布表单包含用户和电子邮件我想在过帐表单中添加一个新值例如url在我使用ReverseProxy 重定向之前

这是我的代理代码

package main
import (
"log"
"net/http"
"net/http/httputil"
"net/url"
)
func main() {
origin, _ := url.Parse("http://localhost:9000/")
director := func(req *http.Request) {
req.Header.Add("X-Forwarded-Host", req.Host)
req.Header.Add("X-Origin-Host", origin.Host)
req.URL.Scheme = "http"
req.URL.Host = origin.Host
}
proxy := &httputil.ReverseProxy{Director: director}
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
proxy.ServeHTTP(w, r)
})
log.Fatal(http.ListenAndServe(":8080", nil))
}

我试过R.Form.addr.PostForm.addr.Form.setr.PostForm.set它不起作用。

你可以试试这个。

func main() {
origin, _ := url.Parse("http://localhost:9000/")
director := func(req *http.Request) {
req.Header.Add("X-Forwarded-Host", req.Host)
req.Header.Add("X-Origin-Host", origin.Host)
req.URL.Scheme = "http"
req.URL.Host = origin.Host
}
proxy := &httputil.ReverseProxy{Director: director}
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
r.ParseForm()
form := r.Form
form.Add("hello", "world")
body := form.Encode()
r.Body = ioutil.NopCloser(strings.NewReader(body))
r.ContentLength = int64(len(body))
proxy.ServeHTTP(w, r)
})
log.Fatal(http.ListenAndServe(":8080", nil))
}

最新更新