Closed Felixel42 closed 3 years ago
We have tests for encoded parameters. What version of spring cloud are you using?
If you would like us to look at this issue, please provide the requested information. If the information is not provided within the next 7 days this issue will be closed.
We have tests for encoded parameters. What version of spring cloud are you using?
See second line of this issue. But to be sure i could reproduce the error with 2.3.1.RELEASE
and HOXTON.SR6
.
Yes there are tests in https://github.com/spring-cloud/spring-cloud-gateway/blob/master/spring-cloud-gateway-core/src/test/java/org/springframework/cloud/gateway/filter/factory/AddRequestParameterGatewayFilterFactoryTests.java. But none of them tests the behavior if the value of the extracted ServerWebExchangeUtils.URI_TEMPLATE_VARIABLES_ATTRIBUTE
contains a decoded value.
There is also a TODO
comment witch is indicating a missing encoding: https://github.com/spring-cloud/spring-cloud-gateway/blob/master/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/filter/factory/AddRequestParameterGatewayFilterFactory.java#L57
In the example above the filter code would evaluate and fail:
String value = ServerWebExchangeUtils.expand(exchange, config.getValue()); // value= "test "
....
URI newUri = UriComponentsBuilder.fromUri(uri)
.replaceQuery(query.toString()).build(true).toUri(); // fails because value/query is not encoded
This issue has been addressed on the RemoveRequestParameterGatewayFilterFactory by: https://github.com/spring-cloud/spring-cloud-gateway/pull/1613. The solution is to simply remove the "true" (and hence, treat it as false, not-encoded) from the build method.
Hi,
It seems that this issue hasn't been addressed for AddRequestParameterGatewayFilterFactory.
As @scuhzq mentioned in their issue, build in AddRequestParameterGatewayFilterFactory still takes true as input:
URI newUri = UriComponentsBuilder.fromUri(uri).replaceQuery(query.toString()).build(true).toUri();
even in the latest version.
Thanks!
Describe the bug
Using the
AddRequestParameter
Filter with the config below results in following Error:Sample
The error occurs during invocation of the route with following url: