Fix improper encoding of '+' in query parameter values when rewrite query parameter
Signed-off-by: raccoonback <kosb15@naver.com>
This commit is contained in:
@@ -351,7 +351,7 @@ public abstract class BeforeFilterFunctions {
|
||||
queryParams.add(name, replacement);
|
||||
}
|
||||
|
||||
MultiValueMap<String, String> encodedQueryParams = UriUtils.encodeQueryParams(queryParams);
|
||||
MultiValueMap<String, String> encodedQueryParams = MvcUtils.encodeQueryParams(queryParams);
|
||||
URI rewrittenUri = UriComponentsBuilder.fromUri(request.uri())
|
||||
.replaceQueryParams(unmodifiableMultiValueMap(encodedQueryParams))
|
||||
.build(true)
|
||||
|
||||
@@ -129,11 +129,27 @@ class BeforeFilterFunctionsTests {
|
||||
assertThat(result.uri().toString()).hasToString("http://localhost/path?baz=qux&foo%5B%5D=replacement%5B%5D");
|
||||
}
|
||||
|
||||
@Test
|
||||
void rewritePlusSignRequestParameter() {
|
||||
MockHttpServletRequest servletRequest = MockMvcRequestBuilders.get("http://localhost/path")
|
||||
.param("foo", "bar")
|
||||
.param("baz", "qux")
|
||||
.buildRequest(null);
|
||||
|
||||
ServerRequest request = ServerRequest.create(servletRequest, Collections.emptyList());
|
||||
|
||||
ServerRequest result = BeforeFilterFunctions.rewriteRequestParameter("foo", "replacement+").apply(request);
|
||||
|
||||
assertThat(result.param("foo")).isPresent().hasValue("replacement+");
|
||||
assertThat(result.uri().toString()).hasToString("http://localhost/path?baz=qux&foo=replacement%2B");
|
||||
}
|
||||
|
||||
@Test
|
||||
void rewriteRequestParameterWithEncodedRemainParameters() {
|
||||
MockHttpServletRequest servletRequest = MockMvcRequestBuilders.get("http://localhost/path")
|
||||
.param("foo", "bar")
|
||||
.param("baz[]", "qux[]")
|
||||
.param("quux", "corge+")
|
||||
.buildRequest(null);
|
||||
|
||||
ServerRequest request = ServerRequest.create(servletRequest, Collections.emptyList());
|
||||
@@ -141,7 +157,8 @@ class BeforeFilterFunctionsTests {
|
||||
ServerRequest result = BeforeFilterFunctions.rewriteRequestParameter("foo", "replacement").apply(request);
|
||||
|
||||
assertThat(result.param("foo")).isPresent().hasValue("replacement");
|
||||
assertThat(result.uri().toString()).hasToString("http://localhost/path?baz%5B%5D=qux%5B%5D&foo=replacement");
|
||||
assertThat(result.uri().toString())
|
||||
.hasToString("http://localhost/path?baz%5B%5D=qux%5B%5D&quux=corge%2B&foo=replacement");
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user