Relax domain name checks in ResponseCookie
Closes gh-23924
This commit is contained in:
@@ -374,7 +374,7 @@ public final class ResponseCookie extends HttpCookie {
|
||||
}
|
||||
int char1 = domain.charAt(0);
|
||||
int charN = domain.charAt(domain.length() - 1);
|
||||
if (char1 == '.' || char1 == '-' || charN == '.' || charN == '-') {
|
||||
if (char1 == '-' || charN == '.' || charN == '-') {
|
||||
throw new IllegalArgumentException("Invalid first/last char in cookie domain: " + domain);
|
||||
}
|
||||
for (int i = 0, c = -1; i < domain.length(); i++) {
|
||||
|
||||
@@ -85,6 +85,31 @@ public class ResponseCookieTests {
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
public void domainChecks() {
|
||||
|
||||
Arrays.asList("abc", "abc.org", "abc-def.org", "abc3.org", ".abc.org")
|
||||
.forEach(domain -> ResponseCookie.from("n", "v").domain(domain).build());
|
||||
|
||||
Arrays.asList("-abc.org", "abc.org.", "abc.org-", "-abc.org", "abc.org-")
|
||||
.forEach(domain -> {
|
||||
try {
|
||||
ResponseCookie.from("n", "v").domain(domain).build();
|
||||
}
|
||||
catch (IllegalArgumentException ex) {
|
||||
assertThat(ex.getMessage(), Matchers.containsString("Invalid first/last char"));
|
||||
}
|
||||
});
|
||||
|
||||
Arrays.asList("abc..org", "abc.-org", "abc-.org")
|
||||
.forEach(domain -> {
|
||||
try {
|
||||
ResponseCookie.from("n", "v").domain(domain).build();
|
||||
}
|
||||
catch (IllegalArgumentException ex) {
|
||||
assertThat(ex.getMessage(), Matchers.containsString("invalid cookie domain char"));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user