У меня есть следующее DomainNameMapping, которое содержит следующие два сопоставления.
"*. App.example.com" => A
"*. Example.com" => B
Когда я пытаюсь отобразить хост "app.example.com", я получаю вывод A. Я ожидаю, что вместо этого DomainNameMapping совпадет с "* .example.com", и вывод B будет возвращен.
Глядя на исходный код Netty, кажется, что он удовлетворяет первому условию метода совпадений (String, String).
static boolean matches(String template, String hostName) {
if (template.startsWith("*.")) {
return template.regionMatches(2, hostName, 0, hostName.length())
|| commonSuffixOfLength(hostName, template, template.length() - 1);
}
return template.equals(hostName);
}
А именно, template.regionMatches(2, hostName, 0, hostName.length())
верно в этом случае. Почему этому случаю разрешено совпадать? Мне кажется, что шаблон должен совпадать только с hostNames, у которых есть некоторый субдомен с префиксом в корневом домене, определяемый подстановочным знаком, найденным в DomainNameMapping.