Tomcat или Apache автоматически кодирует URL перенаправления - PullRequest
0 голосов
/ 07 февраля 2012

В моем Spring-контроллере есть простое перенаправление:

if (url != null) {
    String username = request.getParameter("j_username");
    if(username != null) {
         username = URLEncoder.encode(username, "UTF-8");
    }
    url = url + (url.contains("?")? "&":"?") + "j_username=" + username;
    getRedirectStrategy().sendRedirect(request, response, url);
}

Имя пользователя должно быть предварительно заполнено в следующей форме. Это прекрасно работает в моей локальной среде Jetty и Dev (Tomcat) (имя пользователя отображается как "abc@mysite.com" правильно). Но когда он попадает в QA, который находится на apache / tomcat, имя пользователя получает двойную кодировку, в адресной строке браузера отображается «j_username = abc% 2540mysite.com» и в форме отображается как «abc% 40mysite.com». Никогда не видел эту проблему раньше. Есть указатели? Благодарю.

1 Ответ

0 голосов
/ 08 февраля 2012

Попробуйте использовать org.springframework.web.util.UriUtils.encodeQueryParam(String, String) для кодирования параметра запроса, URLEncoder слишком универсален и не знает контекст, в котором вы находитесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...