Fixes unicode url-rewrite

Signed-off-by: Jens Mallien <108389225+jensmatw@users.noreply.github.com>
This commit is contained in:
Jens Mallien
2024-09-30 15:24:26 +02:00
committed by Jens Mallien
parent ea0c5ef3d2
commit 367cb80db9
2 changed files with 25 additions and 1 deletions

View File

@@ -327,7 +327,7 @@ public abstract class BeforeFilterFunctions {
String path = request.uri().getPath();
String newPath = pattern.matcher(path).replaceAll(normalizedReplacement);
URI rewrittenUri = UriComponentsBuilder.fromUri(request.uri()).replacePath(newPath).build().toUri();
URI rewrittenUri = UriComponentsBuilder.fromUri(request.uri()).replacePath(newPath).encode().build().toUri();
ServerRequest modified = ServerRequest.from(request).uri(rewrittenUri).build();

View File

@@ -55,4 +55,28 @@ public class BeforeFilterFunctionsTests {
assertThat(modified.uri().getRawPath()).isEqualTo("/modified/path/with%20spaces");
}
@Test
public void rewritePathWithEnDash() {
MockHttpServletRequest servletRequest = MockMvcRequestBuilders.get("http://localhost/get/path/withendashes")
.buildRequest(null);
ServerRequest request = ServerRequest.create(servletRequest, Collections.emptyList());
ServerRequest modified = BeforeFilterFunctions.rewritePath("get", "modified").apply(request);
assertThat(modified.uri().getRawPath()).isEqualTo("/modified/path/with%E2%80%93en%E2%80%93dashes");
}
@Test
public void rewritePathWithEnDashAndSpace() {
MockHttpServletRequest servletRequest = MockMvcRequestBuilders.get("http://localhost/get/path/withendashes and spaces")
.buildRequest(null);
ServerRequest request = ServerRequest.create(servletRequest, Collections.emptyList());
ServerRequest modified = BeforeFilterFunctions.rewritePath("get", "modified").apply(request);
assertThat(modified.uri().getRawPath()).isEqualTo("/modified/path/with%E2%80%93en%E2%80%93dashes%20and%20spaces");
}
}