Skip to content

Commit 5b26387

Browse files
authored
Merge pull request #3798 from raccoonback/encode-plus-sign-query-parameter-when-rewrite-in-mvc
Fix '+' character in query parameters is not encoded when rewrite query parameter in mvc
2 parents bde4e32 + 0bb0d26 commit 5b26387

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

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

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,19 +132,36 @@ void rewriteEncodedRequestParameter() {
132132
.hasToString("http://localhost/path?quux=corge%2B&baz=qux&foo%5B%5D=replacement%5B%5D");
133133
}
134134

135+
@Test
136+
void rewritePlusSignRequestParameter() {
137+
MockHttpServletRequest servletRequest = MockMvcRequestBuilders.get("http://localhost/path")
138+
.param("foo", "bar")
139+
.param("baz", "qux")
140+
.buildRequest(null);
141+
142+
ServerRequest request = ServerRequest.create(servletRequest, Collections.emptyList());
143+
144+
ServerRequest result = BeforeFilterFunctions.rewriteRequestParameter("foo", "replacement+").apply(request);
145+
146+
assertThat(result.param("foo")).isPresent().hasValue("replacement+");
147+
assertThat(result.uri().toString()).hasToString("http://localhost/path?baz=qux&foo=replacement%2B");
148+
}
149+
135150
@Test
136151
void rewriteRequestParameterWithEncodedRemainParameters() {
137152
MockHttpServletRequest servletRequest = MockMvcRequestBuilders.get("http://localhost/path")
138153
.param("foo", "bar")
139154
.param("baz[]", "qux[]")
155+
.param("quux", "corge+")
140156
.buildRequest(null);
141157

142158
ServerRequest request = ServerRequest.create(servletRequest, Collections.emptyList());
143159

144160
ServerRequest result = BeforeFilterFunctions.rewriteRequestParameter("foo", "replacement").apply(request);
145161

146162
assertThat(result.param("foo")).isPresent().hasValue("replacement");
147-
assertThat(result.uri().toString()).hasToString("http://localhost/path?baz%5B%5D=qux%5B%5D&foo=replacement");
163+
assertThat(result.uri().toString())
164+
.hasToString("http://localhost/path?baz%5B%5D=qux%5B%5D&quux=corge%2B&foo=replacement");
148165
}
149166

150167
@Test

0 commit comments

Comments
 (0)