Skip to content

Commit 98021b5

Browse files
committed
Fix improper encoding of '+' in query parameter values in mvc
Signed-off-by: raccoonback <kosb15@naver.com>
1 parent 2158d6a commit 98021b5

File tree

2 files changed

+4
-3
lines changed

2 files changed

+4
-3
lines changed

spring-cloud-gateway-server-mvc/src/main/java/org/springframework/cloud/gateway/server/mvc/filter/BeforeFilterFunctions.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@
4545
import org.springframework.web.servlet.function.ServerRequest;
4646
import org.springframework.web.util.UriComponentsBuilder;
4747
import org.springframework.web.util.UriTemplate;
48-
import org.springframework.web.util.UriUtils;
4948

5049
import static org.springframework.cloud.gateway.server.mvc.common.MvcUtils.CIRCUITBREAKER_EXECUTION_EXCEPTION_ATTR;
5150
import static org.springframework.util.CollectionUtils.unmodifiableMultiValueMap;
@@ -216,7 +215,7 @@ public static Function<ServerRequest, ServerRequest> removeRequestParameter(Stri
216215
MultiValueMap<String, String> queryParams = new LinkedMultiValueMap<>(request.params());
217216
queryParams.remove(name);
218217

219-
MultiValueMap<String, String> encodedQueryParams = UriUtils.encodeQueryParams(queryParams);
218+
MultiValueMap<String, String> encodedQueryParams = MvcUtils.encodeQueryParams(queryParams);
220219

221220
// remove from uri
222221
URI newUri = UriComponentsBuilder.fromUri(request.uri())

spring-cloud-gateway-server-mvc/src/test/java/org/springframework/cloud/gateway/server/mvc/filter/BeforeFilterFunctionsTests.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@ void removeRequestParameterWithEncodedRemainParameters() {
119119
MockHttpServletRequest servletRequest = MockMvcRequestBuilders.get("http://localhost/path")
120120
.queryParam("foo", "bar")
121121
.queryParam("baz[]", "qux[]")
122+
.queryParam("quux", "corge+")
122123
.buildRequest(null);
123124

124125
ServerRequest request = ServerRequest.create(servletRequest, Collections.emptyList());
@@ -127,7 +128,8 @@ void removeRequestParameterWithEncodedRemainParameters() {
127128

128129
assertThat(result.param("foo")).isEmpty();
129130
assertThat(result.param("baz[]")).isPresent().hasValue("qux[]");
130-
assertThat(result.uri().toString()).hasToString("http://localhost/path?baz%5B%5D=qux%5B%5D");
131+
assertThat(result.param("quux")).isPresent().hasValue("corge+");
132+
assertThat(result.uri().toString()).hasToString("http://localhost/path?baz%5B%5D=qux%5B%5D&quux=corge%2B");
131133
}
132134

133135
@Test

0 commit comments

Comments
 (0)