Skip to content

Commit 7678286

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-32618
1 parent 510ff87 commit 7678286

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
@@ -73,19 +73,19 @@ public class UriComponentsBuilder implements UriBuilder, Cloneable {
7373

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

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

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

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

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

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

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

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

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

0 commit comments

Comments
 (0)