Remove unnecessary query parameter encoding check by assuming decoded parameters from serverRequest
Signed-off-by: raccoonback <kosb15@naver.com>
This commit is contained in:
@@ -87,7 +87,7 @@ public class ProxyExchangeHandlerFunction
|
||||
@Override
|
||||
public ServerResponse handle(ServerRequest serverRequest) {
|
||||
URI uri = uriResolver.apply(serverRequest);
|
||||
MultiValueMap<String, String> params = ensureEncodedQueryParameters(serverRequest);
|
||||
MultiValueMap<String, String> 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<String, String> ensureEncodedQueryParameters(ServerRequest serverRequest) {
|
||||
boolean encoded = containsEncodedQuery(serverRequest.uri(), serverRequest.params());
|
||||
MultiValueMap<String, String> params = serverRequest.params();
|
||||
if (!encoded) {
|
||||
params = MvcUtils.encodeQueryParams(serverRequest.params());
|
||||
}
|
||||
return params;
|
||||
}
|
||||
|
||||
private static boolean containsEncodedQuery(URI uri, MultiValueMap<String, String> 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<ServerRequest, URI> {
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user