Может ли sendRedirect() действовать как метод post вместо get? - jsp/сервлеты

У меня есть простая форма, которая принимает имя пользователя и пароль. Я должен использовать метод sendRedirect() для перенаправления страницы на одну страницу, если вход в систему действителен, а другой - нет. Мне нужно использовать sendRedirect(), а не forward(), так как другие страницы находятся на другом сервере. Я заметил, что при использовании

response.sendRedirect(response.encodeRedirectURL("FileName.jsp?paramName=" +value));

sendRedirect() использует метод GET, так как имя = значение отображается в URL-адресе. Это нежелательно для меня, поскольку я не хочу, чтобы эти значения отображались в URL-адресе по соображениям безопасности.

Есть ли способ POST использовать эти значения с помощью sendRedirect()? Я попытался сделать форму с методом POST, который скрывает нужные мне значения, но все же не удастся

Чем я могу угодить? Спасибо:)

Ответ 1

Нет, это невозможно. Единственным (грязным) обходным решением, которое я вижу, является пересылка на внутреннюю страницу, содержащую скрытую форму (с методом POST) и JavaScript script, представляющую эту форму.

Ответ 2

Это своего рода старый, но здесь я успешно выполняю это:

response.setStatus(307); //this makes the redirection keep your requesting method as is.
response.addHeader("Location", "http://address.to/redirect");

См. http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.8 для объяснения кода статуса HTTP 307.

Ответ 3

использовать javascript

$('#inset_form').html('<form action="FlowService" name="form" method="post" style="display:none;"><input type="hidden" name="idapp" value="' + idApp + '" /></form>');
        document.forms['form'].submit();

Ответ 4

Проверьте это один раз:

String url = "http://www.mysite/servlets/theServlet";
RequestDispatcher dispatcher = servletContext().getRequestDispatcher(url);
dispatcher.forward(request, response);

Ответ 5

Нет, перенаправление HTTP всегда будет использовать GET для целевой страницы.

Однако данные POST не намного безопаснее, чем данные GET. Пользователь может по-прежнему вмешиваться в них. Храните их в сеансе вместо этого.

Ответ 6

Использовать sendredirect без предоставления каких-либо параметров и скрыть эти параметры в сервлет-сервлете, и если вам нужны эти параметры на перенаправленной странице, используйте их через этот сервлет.