Browse Source

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
pull/32754/head
Brian Clozel 2 years ago
parent
commit
7678286fb3
  1. 8
      spring-web/src/main/java/org/springframework/web/util/UriComponentsBuilder.java

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

@ -73,19 +73,19 @@ public class UriComponentsBuilder implements UriBuilder, Cloneable { @@ -73,19 +73,19 @@ public class UriComponentsBuilder implements UriBuilder, Cloneable {
private static final Pattern QUERY_PARAM_PATTERN = Pattern.compile("([^&=]+)(=?)([^&]+)?");
private static final String SCHEME_PATTERN = "([^:/?#]+):";
private static final String SCHEME_PATTERN = "([^:/?#\\\\]+):";
private static final String HTTP_PATTERN = "(?i)(http|https):";
private static final String USERINFO_PATTERN = "([^/?#]*)";
private static final String USERINFO_PATTERN = "([^/?#\\\\]*)";
private static final String HOST_IPV4_PATTERN = "[^/?#:]*";
private static final String HOST_IPV4_PATTERN = "[^/?#:\\\\]*";
private static final String HOST_IPV6_PATTERN = "\\[[\\p{XDigit}:.]*[%\\p{Alnum}]*]";
private static final String HOST_PATTERN = "(" + HOST_IPV6_PATTERN + "|" + HOST_IPV4_PATTERN + ")";
private static final String PORT_PATTERN = "(\\{[^}]+\\}?|[^/?#]*)";
private static final String PORT_PATTERN = "(\\{[^}]+\\}?|[^/?#\\\\]*)";
private static final String PATH_PATTERN = "([^?#]*)";

Loading…
Cancel
Save