Ответ 1
Нет, это невозможно. Единственным (грязным) обходным решением, которое я вижу, является пересылка на внутреннюю страницу, содержащую скрытую форму (с методом POST) и JavaScript script, представляющую эту форму.
У меня есть простая форма, которая принимает имя пользователя и пароль. Я должен использовать метод sendRedirect()
для перенаправления страницы на одну страницу, если вход в систему действителен, а другой - нет. Мне нужно использовать sendRedirect()
, а не forward()
, так как другие страницы находятся на другом сервере. Я заметил, что при использовании
response.sendRedirect(response.encodeRedirectURL("FileName.jsp?paramName=" +value));
sendRedirect()
использует метод GET
, так как имя = значение отображается в URL-адресе. Это нежелательно для меня, поскольку я не хочу, чтобы эти значения отображались в URL-адресе по соображениям безопасности.
Есть ли способ POST
использовать эти значения с помощью sendRedirect()?
Я попытался сделать форму с методом POST
, который скрывает нужные мне значения, но все же не удастся
Чем я могу угодить? Спасибо:)
Нет, это невозможно. Единственным (грязным) обходным решением, которое я вижу, является пересылка на внутреннюю страницу, содержащую скрытую форму (с методом POST) и JavaScript script, представляющую эту форму.
Это своего рода старый, но здесь я успешно выполняю это:
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.
использовать 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();
Проверьте это один раз:
String url = "http://www.mysite/servlets/theServlet";
RequestDispatcher dispatcher = servletContext().getRequestDispatcher(url);
dispatcher.forward(request, response);
Нет, перенаправление HTTP всегда будет использовать GET для целевой страницы.
Однако данные POST не намного безопаснее, чем данные GET. Пользователь может по-прежнему вмешиваться в них. Храните их в сеансе вместо этого.
Использовать sendredirect без предоставления каких-либо параметров и скрыть эти параметры в сервлет-сервлете, и если вам нужны эти параметры на перенаправленной странице, используйте их через этот сервлет.