diff --git a/spring-cloud-gateway-server-mvc/src/main/java/org/springframework/cloud/gateway/server/mvc/handler/ProxyExchangeHandlerFunction.java b/spring-cloud-gateway-server-mvc/src/main/java/org/springframework/cloud/gateway/server/mvc/handler/ProxyExchangeHandlerFunction.java index 5a724800..6923f2d6 100644 --- a/spring-cloud-gateway-server-mvc/src/main/java/org/springframework/cloud/gateway/server/mvc/handler/ProxyExchangeHandlerFunction.java +++ b/spring-cloud-gateway-server-mvc/src/main/java/org/springframework/cloud/gateway/server/mvc/handler/ProxyExchangeHandlerFunction.java @@ -87,7 +87,7 @@ public class ProxyExchangeHandlerFunction @Override public ServerResponse handle(ServerRequest serverRequest) { URI uri = uriResolver.apply(serverRequest); - MultiValueMap params = ensureEncodedQueryParameters(serverRequest); + MultiValueMap params = MvcUtils.encodeQueryParams(serverRequest.params()); // @formatter:off URI url = UriComponentsBuilder.fromUri(serverRequest.uri()) .scheme(uri.getScheme()) @@ -134,38 +134,6 @@ public class ProxyExchangeHandlerFunction return filtered; } - private static MultiValueMap ensureEncodedQueryParameters(ServerRequest serverRequest) { - boolean encoded = containsEncodedQuery(serverRequest.uri(), serverRequest.params()); - MultiValueMap params = serverRequest.params(); - if (!encoded) { - params = MvcUtils.encodeQueryParams(serverRequest.params()); - } - return params; - } - - private static boolean containsEncodedQuery(URI uri, MultiValueMap params) { - String rawQuery = uri.getRawQuery(); - boolean encoded = (rawQuery != null && rawQuery.contains("%")) - || (uri.getRawPath() != null && uri.getRawPath().contains("%")); - - // Verify if it is really fully encoded. Treat partial encoded as unencoded. - if (encoded) { - try { - UriComponentsBuilder.fromUri(uri).replaceQueryParams(params).build(true); - return true; - } - catch (IllegalArgumentException ignored) { - if (log.isTraceEnabled()) { - log.trace("Error in containsEncodedParts", ignored); - } - } - - return false; - } - - return false; - } - public interface URIResolver extends Function { }