fix upstream request path

This commit is contained in:
Jehiah Czebotar 2015-03-21 15:29:07 -04:00
parent 736ec2aa9f
commit 16f2c981f3
2 changed files with 6 additions and 6 deletions

View File

@ -67,7 +67,8 @@ func setProxyUpstreamHostHeader(proxy *httputil.ReverseProxy, target *url.URL) {
proxy.Director = func(req *http.Request) { proxy.Director = func(req *http.Request) {
director(req) director(req)
// use RequestURI so that we aren't unescaping encoded slashes in the request path // use RequestURI so that we aren't unescaping encoded slashes in the request path
req.URL.Opaque = fmt.Sprintf("//%s%s", target.Host, req.RequestURI) req.Host = target.Host
req.URL.Opaque = req.RequestURI
req.URL.RawQuery = "" req.URL.RawQuery = ""
} }
} }
@ -76,7 +77,7 @@ func setProxyDirector(proxy *httputil.ReverseProxy) {
proxy.Director = func(req *http.Request) { proxy.Director = func(req *http.Request) {
director(req) director(req)
// use RequestURI so that we aren't unescaping encoded slashes in the request path // use RequestURI so that we aren't unescaping encoded slashes in the request path
req.URL.Opaque = fmt.Sprintf("//%s%s", req.URL.Host, req.RequestURI) req.URL.Opaque = req.RequestURI
req.URL.RawQuery = "" req.URL.RawQuery = ""
} }
} }

View File

@ -51,14 +51,13 @@ func TestEncodedSlashes(t *testing.T) {
defer frontend.Close() defer frontend.Close()
f, _ := url.Parse(frontend.URL) f, _ := url.Parse(frontend.URL)
encodedPath := "/a%2Fb/" encodedPath := "/a%2Fb/?c=1"
getReq := &http.Request{URL: &url.URL{Scheme: "http", Host: f.Host, Opaque: encodedPath}} getReq := &http.Request{URL: &url.URL{Scheme: "http", Host: f.Host, Opaque: encodedPath}}
_, err := http.DefaultClient.Do(getReq) _, err := http.DefaultClient.Do(getReq)
if err != nil { if err != nil {
t.Fatalf("err %s", err) t.Fatalf("err %s", err)
} }
expected := backend.URL + encodedPath if seen != encodedPath {
if seen != expected { t.Errorf("got bad request %q expected %q", seen, encodedPath)
t.Errorf("got bad request %q expected %q", seen, expected)
} }
} }