Skip to content

Commit 494ed4e

Browse files
committed
Refine UriComponentsBuilder parsing
This commit refines the expressions for the scheme, user info, host and port parts of the URL in UriComponentsBuilder to better conform to RFC 3986. Fixes gh-32616
1 parent 39cd316 commit 494ed4e

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

spring-web/src/main/java/org/springframework/web/util/UriComponentsBuilder.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -72,19 +72,19 @@ public class UriComponentsBuilder implements UriBuilder, Cloneable {
7272

7373
private static final Pattern QUERY_PARAM_PATTERN = Pattern.compile("([^&=]+)(=?)([^&]+)?");
7474

75-
private static final String SCHEME_PATTERN = "([^:/?#]+):";
75+
private static final String SCHEME_PATTERN = "([^:/?#\\\\]+):";
7676

7777
private static final String HTTP_PATTERN = "(?i)(http|https):";
7878

79-
private static final String USERINFO_PATTERN = "([^/?#]*)";
79+
private static final String USERINFO_PATTERN = "([^/?#\\\\]*)";
8080

81-
private static final String HOST_IPV4_PATTERN = "[^/?#:]*";
81+
private static final String HOST_IPV4_PATTERN = "[^/?#:\\\\]*";
8282

8383
private static final String HOST_IPV6_PATTERN = "\\[[\\p{XDigit}:.]*[%\\p{Alnum}]*]";
8484

8585
private static final String HOST_PATTERN = "(" + HOST_IPV6_PATTERN + "|" + HOST_IPV4_PATTERN + ")";
8686

87-
private static final String PORT_PATTERN = "(\\{[^}]+\\}?|[^/?#]*)";
87+
private static final String PORT_PATTERN = "(\\{[^}]+\\}?|[^/?#\\\\]*)";
8888

8989
private static final String PATH_PATTERN = "([^?#]*)";
9090

0 commit comments

Comments
 (0)