Skip to content

Commit 4c991ba

Browse files
committed
Make HTTP scheme parsing case-insensitive
Issue: SPR-10779
1 parent 1e90d02 commit 4c991ba

File tree

2 files changed

+11
-2
lines changed

2 files changed

+11
-2
lines changed

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public class UriComponentsBuilder {
6060

6161
private static final String SCHEME_PATTERN = "([^:/?#]+):";
6262

63-
private static final String HTTP_PATTERN = "(http|https):";
63+
private static final String HTTP_PATTERN = "(?i)(http|https):";
6464

6565
private static final String USERINFO_PATTERN = "([^@/]*)";
6666

@@ -223,7 +223,8 @@ public static UriComponentsBuilder fromHttpUrl(String httpUrl) {
223223
if (m.matches()) {
224224
UriComponentsBuilder builder = new UriComponentsBuilder();
225225

226-
builder.scheme(m.group(1));
226+
String scheme = m.group(1);
227+
builder.scheme((scheme != null) ? scheme.toLowerCase() : scheme);
227228
builder.userInfo(m.group(4));
228229
builder.host(m.group(5));
229230
String port = m.group(7);

spring-web/src/test/java/org/springframework/web/util/UriComponentsBuilderTests.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,14 @@ public void fromUriStringQueryParamWithReservedCharInValue() throws URISyntaxExc
161161
assertEquals("1USD=?EUR", result.getQueryParams().getFirst("q"));
162162
}
163163

164+
// SPR-10779
165+
166+
@Test
167+
public void fromHttpUrlStringCaseInsesitiveScheme() {
168+
assertEquals("http", UriComponentsBuilder.fromHttpUrl("HTTP://www.google.com").build().getScheme());
169+
assertEquals("https", UriComponentsBuilder.fromHttpUrl("HTTPS://www.google.com").build().getScheme());
170+
}
171+
164172
@Test
165173
public void path() throws URISyntaxException {
166174
UriComponentsBuilder builder = UriComponentsBuilder.fromPath("/foo/bar");

0 commit comments

Comments
 (0)