Fix '+' character in query parameters is not encoded when remove query parameter #3799
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
When a
+
character is included in an HTTP query parameter, it is currently interpreted as a space in theBeforeFilterFunctions.removeRequestParameter()
,RemoveRequestParameterGatewayFilterFactory
,RewriteRequestParameterGatewayFilterFactory
. This may result in the parameter being misinterpreted on the server side compared to its original intent.In this PR, we have applied precise encoding based on
StandardCharsets.UTF_8
or replaced the use ofUriUtils.encodeQueryParams()
with aMvcUtils.encodeQueryParams()
orServerWebExchangeUtils.encodeQueryParams()
custom utility to ensure that the+
character is correctly encoded as%2B
.Changes:
+
with%2B
after standard encoding(The
BeforeFilterFunctions.removeRequestParameter()
,RemoveRequestParameterGatewayFilterFactory
,RewriteRequestParameterGatewayFilterFactory
is only present in the4.1.x
branch.)For example.
[Remove query parameter]
foo
query parameter.[RewriteRequestParameterGatewayFilterFactory]
RewriteRequestParameterGatewayFilterFactory
is handled for the same reason as in Fix '+' character in query parameters is not encoded when rewrite query parameter in mvc #3798.