diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f836c1a..57561ebe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ ## Changes since v7.0.1 +- [#1115](https://github.com/oauth2-proxy/oauth2-proxy/pull/1115) Fix upstream proxy appending ? to requests (@JoelSpeed) - [#1117](https://github.com/oauth2-proxy/oauth2-proxy/pull/1117) Deprecate GCP HealthCheck option (@JoelSpeed) - [#1104](https://github.com/oauth2-proxy/oauth2-proxy/pull/1104) Allow custom robots text pages (@JoelSpeed) - [#1045](https://github.com/oauth2-proxy/oauth2-proxy/pull/1045) Ensure redirect URI always has a scheme (@JoelSpeed) diff --git a/pkg/upstream/http.go b/pkg/upstream/http.go index 718bcba6..092823c0 100644 --- a/pkg/upstream/http.go +++ b/pkg/upstream/http.go @@ -153,6 +153,7 @@ func setProxyDirector(proxy *httputil.ReverseProxy) { // use RequestURI so that we aren't unescaping encoded slashes in the request path req.URL.Opaque = req.RequestURI req.URL.RawQuery = "" + req.URL.ForceQuery = false } } diff --git a/pkg/upstream/http_test.go b/pkg/upstream/http_test.go index aecee5c7..770d56a6 100644 --- a/pkg/upstream/http_test.go +++ b/pkg/upstream/http_test.go @@ -140,6 +140,29 @@ var _ = Describe("HTTP Upstream Suite", func() { }, expectedUpstream: "encodedSlashes", }), + Entry("request a path with an empty query string", &httpUpstreamTableInput{ + id: "default", + serverAddr: &serverAddr, + target: "http://example.localhost/foo?", + method: "GET", + body: []byte{}, + errorHandler: nil, + expectedResponse: testHTTPResponse{ + code: 200, + header: map[string][]string{ + contentType: {applicationJSON}, + }, + request: testHTTPRequest{ + Method: "GET", + URL: "http://example.localhost/foo?", + Header: map[string][]string{}, + Body: []byte{}, + Host: "example.localhost", + RequestURI: "http://example.localhost/foo?", + }, + }, + expectedUpstream: "default", + }), Entry("when the request has a body", &httpUpstreamTableInput{ id: "requestWithBody", serverAddr: &serverAddr,