Merge pull request #979 from marcosbarbero/master
* pull979: Use request.characterEncoding prior to default encoding
This commit is contained in:
@@ -52,6 +52,7 @@ import lombok.extern.apachecommons.CommonsLog;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Dave Syer
|
* @author Dave Syer
|
||||||
|
* @author Marcos Barbero
|
||||||
*/
|
*/
|
||||||
@CommonsLog
|
@CommonsLog
|
||||||
public class ProxyRequestHelper {
|
public class ProxyRequestHelper {
|
||||||
@@ -98,8 +99,7 @@ public class ProxyRequestHelper {
|
|||||||
String contextURI = (String) context.get("requestURI");
|
String contextURI = (String) context.get("requestURI");
|
||||||
if (contextURI != null) {
|
if (contextURI != null) {
|
||||||
try {
|
try {
|
||||||
uri = UriUtils.encodePath(contextURI,
|
uri = UriUtils.encodePath(contextURI, characterEncoding(request));
|
||||||
WebUtils.DEFAULT_CHARACTER_ENCODING);
|
|
||||||
}
|
}
|
||||||
catch (Exception e) {
|
catch (Exception e) {
|
||||||
log.debug(
|
log.debug(
|
||||||
@@ -110,6 +110,11 @@ public class ProxyRequestHelper {
|
|||||||
return uri;
|
return uri;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String characterEncoding(HttpServletRequest request) {
|
||||||
|
return request.getCharacterEncoding() != null ? request.getCharacterEncoding()
|
||||||
|
: WebUtils.DEFAULT_CHARACTER_ENCODING;
|
||||||
|
}
|
||||||
|
|
||||||
public MultiValueMap<String, String> buildZuulRequestQueryParams(
|
public MultiValueMap<String, String> buildZuulRequestQueryParams(
|
||||||
HttpServletRequest request) {
|
HttpServletRequest request) {
|
||||||
Map<String, List<String>> map = HTTPRequestUtils.getInstance().getQueryParams();
|
Map<String, List<String>> map = HTTPRequestUtils.getInstance().getQueryParams();
|
||||||
@@ -267,7 +272,8 @@ public class ProxyRequestHelper {
|
|||||||
|
|
||||||
/* for tests */ boolean shouldDebugBody(RequestContext ctx) {
|
/* for tests */ boolean shouldDebugBody(RequestContext ctx) {
|
||||||
HttpServletRequest request = ctx.getRequest();
|
HttpServletRequest request = ctx.getRequest();
|
||||||
if (!this.traceRequestBody || ctx.isChunkedRequestBody() || RequestUtils.isZuulServletRequest()) {
|
if (!this.traceRequestBody || ctx.isChunkedRequestBody()
|
||||||
|
|| RequestUtils.isZuulServletRequest()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (request == null || request.getContentType() == null) {
|
if (request == null || request.getContentType() == null) {
|
||||||
|
|||||||
@@ -259,4 +259,33 @@ public class ProxyRequestHelperTests {
|
|||||||
assertThat(queryString, is("?wsdl"));
|
assertThat(queryString, is("?wsdl"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void buildZuulRequestURIWithUTF8() throws Exception {
|
||||||
|
String encodedURI = "/resource/esp%C3%A9cial-char";
|
||||||
|
String decodedURI = "/resource/espécial-char";
|
||||||
|
|
||||||
|
MockHttpServletRequest request = new MockHttpServletRequest("GET", encodedURI);
|
||||||
|
request.setCharacterEncoding("UTF-8");
|
||||||
|
final RequestContext context = RequestContext.getCurrentContext();
|
||||||
|
context.setRequest(request);
|
||||||
|
context.set("requestURI", decodedURI);
|
||||||
|
|
||||||
|
final String requestURI = new ProxyRequestHelper().buildZuulRequestURI(request);
|
||||||
|
assertThat(requestURI, equalTo(encodedURI));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void buildZuulRequestURIWithDefaultEncoding() {
|
||||||
|
String encodedURI = "/resource/esp%E9cial-char";
|
||||||
|
String decodedURI = "/resource/espécial-char";
|
||||||
|
|
||||||
|
MockHttpServletRequest request = new MockHttpServletRequest("GET", encodedURI);
|
||||||
|
final RequestContext context = RequestContext.getCurrentContext();
|
||||||
|
context.setRequest(request);
|
||||||
|
context.set("requestURI", decodedURI);
|
||||||
|
|
||||||
|
final String requestURI = new ProxyRequestHelper().buildZuulRequestURI(request);
|
||||||
|
assertThat(requestURI, equalTo(encodedURI));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user