Decode servletPath in HtmlUnitRequestBuilder
Closes gh-27837
This commit is contained in:
parent
9346c89f5c
commit
3477ec0a35
|
|
@ -57,6 +57,7 @@ import org.springframework.util.ObjectUtils;
|
||||||
import org.springframework.util.StringUtils;
|
import org.springframework.util.StringUtils;
|
||||||
import org.springframework.web.util.UriComponents;
|
import org.springframework.web.util.UriComponents;
|
||||||
import org.springframework.web.util.UriComponentsBuilder;
|
import org.springframework.web.util.UriComponentsBuilder;
|
||||||
|
import org.springframework.web.util.UriUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Internal class used to transform a {@link WebRequest} into a
|
* Internal class used to transform a {@link WebRequest} into a
|
||||||
|
|
@ -262,6 +263,7 @@ final class HtmlUnitRequestBuilder implements RequestBuilder, Mergeable {
|
||||||
String path = uriComponents.getPath();
|
String path = uriComponents.getPath();
|
||||||
String requestPath = (path != null ? path : "");
|
String requestPath = (path != null ? path : "");
|
||||||
String servletPath = requestPath.substring(request.getContextPath().length());
|
String servletPath = requestPath.substring(request.getContextPath().length());
|
||||||
|
servletPath = UriUtils.decode(servletPath, StandardCharsets.UTF_8);
|
||||||
request.setServletPath(servletPath);
|
request.setServletPath(servletPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -782,6 +782,16 @@ public class HtmlUnitRequestBuilderTests {
|
||||||
assertThat(actualRequest.getServletPath()).isEqualTo("/this/here");
|
assertThat(actualRequest.getServletPath()).isEqualTo("/this/here");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test // gh-27837
|
||||||
|
public void buildRequestServletPathWithEncodedUrl() throws Exception {
|
||||||
|
webRequest.setUrl(new URL("http://localhost/test/Fr%C3%BChling%20Sommer%20Herbst%20Winter"));
|
||||||
|
|
||||||
|
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||||
|
|
||||||
|
assertThat(actualRequest.getRequestURI()).isEqualTo("/test/Fr%C3%BChling%20Sommer%20Herbst%20Winter");
|
||||||
|
assertThat(actualRequest.getServletPath()).isEqualTo("/Frühling Sommer Herbst Winter");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void buildRequestSession() throws Exception {
|
public void buildRequestSession() throws Exception {
|
||||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue