У меня есть контроллер, который перенаправляет запрос на URL или возвращает представление. URL для доступа к этому контроллеру: https://domain/agreement.htm
Проблема в том, что если у меня есть такое выражение, как:
@RequestMapping(method = {RequestMethod.GET, RequestMethod.POST})
public void handleRequest(HttpServletRequest request, HttpServletResponse response)
{
String param1 = ""; //getting from DB
Boolean param2 = (Boolean)request.getSession().getAttribute("SESSION_VALUE");
if(StringUtils.isEmpty(param1) || !param2){
//some line of code
String target = getNextURL(id); //returns "/app/accepted.htm"
response.sendRedirect(target);
}
И целевой URL похож на https://domain/app/accepted.htm
. Возможны 4 случая, и их вывод будет таким:
param1 param2 Redirection
Empty false redirecting properly
Empty true redirecting properly
"Some value" false Not redirecting properly
"Some value" true shows a view
В каждом из вышеперечисленных случаев возвращаемая цель точно такая же. Здесь правильное перенаправление означает, что устройство (iOS 13.4) может перейти к следующему URL, который является https://domain/app/accepted.htm
. Но для случая, когда param1 не пуст, а param2 ложен, устройство выдает ошибку Unable to resolve Host
и показывает URL-адрес, который является адресом ящика сервера. Для меня совершенно загадка, почему для этого конкретного случая одни и те же строки кода не работают должным образом, когда методы запроса, количество параметров и цель ответа совпадают. Может кто-нибудь помочь взломать это? Очень признателен
Примечание: то же самое прекрасно работает при добавлении с полным URl:
target = "https://domain" + target;