spring-projects/spring-framework

Multiple slash sanitisation should be optional in `UriComponentsBuilder`

dpozinen opened this issue · 1 comments

The primary reason for this issue is spring-cloud/spring-cloud-gateway#2795 which under the hood uses UriComponentsBuilder. See this comment specifically: spring-cloud/spring-cloud-gateway#2795 (comment)

In the context of #14904 and #17006 there have been changes made to sanitise multiple consecutive slashes and replace them via a single slash:

private static String getSanitizedPath(final StringBuilder path) {
int index = path.indexOf("//");
if (index >= 0) {
StringBuilder sanitized = new StringBuilder(path);
while (index != -1) {
sanitized.deleteCharAt(index);
index = sanitized.indexOf("//", index);
}
return sanitized.toString();
}
return path.toString();

Technically, there is no restriction on multiple consecutive slashes - those are valid urls, so I think that adding the option of preserving those in UriComponentsBuilder would be a good thing, and would solve the mentioned gateway issue.

What do you think?