sendRedirect()可以作为post方法而不是get吗? - jsp / servlets

时间:2012-12-26 10:17:37

标签: jsp redirect post get

我有一个简单的表单,它接受用户名和密码。如果登录有效,我必须使用sendRedirect()方法将页面重定向到一个页面,如果没有,则必须使用另一个页面。我需要使用sendRedirect()而不是forward(),因为其他页面位于另一台服务器中。我注意到使用

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

sendRedirect()正在使用GET方法,因为name = value正在显示在网址中。这对我来说是不可取的,因为出于安全原因,我不希望这些值显示在URL中。

使用sendRedirect()有没有办法POST这些值? 我尝试使用方法POST来创建一个隐藏我需要的值但仍然没有运气的表单

我能做什么?谢谢:))

6 个答案:

答案 0 :(得分:9)

这有点老了,但在这里我成功地运行了这个:

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

有关HTTP 307状态代码的说明,请参阅http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.8

答案 1 :(得分:7)

不,这是不可能的。我看到的唯一(脏)解决方法是转发到包含隐藏表单的内部页面(使用方法POST)和提交此表单的JavaScript脚本。

答案 2 :(得分:2)

使用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();

答案 3 :(得分:1)

查看一次:

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

答案 4 :(得分:0)

不,HTTP重定向将始终使用GET作为目标页面。

然而,无论如何,POST数据并不比GET数据安全得多。用户仍然可以篡改它们。将它们存储在会话中。

答案 5 :(得分:0)

使用sendredirect而不提供任何参数,并在会话范围的servlet中隐藏这些参数,如果在重定向页面中需要这些参数,请通过此servlet使用它们。