我有一个简单的形式,它接受一个用户名和密码。 我必须使用sendRedirect()
方法的页面重定向到一个页面,如果不是,如果日志是有效的,另一个英寸 我需要使用sendRedirect()
而不是forward()
,因为其他页面位于另一台服务器。 我注意到,当使用
response.sendRedirect(response.encodeRedirectURL("FileName.jsp?paramName=" +value));
所述sendRedirect()
是使用GET
方法,因为名称=值在URL被显示。 因为我不希望这些值在URL出于安全原因表明这是不可取的我。
有没有一种方法来POST
使用的sendRedirect()这些价值? 我试图做的方法的形式POST
隐藏了我所需要的值,但仍然没有运气
有什么事请? 谢谢 :)
不,这是不可能的。 唯一的(肮脏)的解决方法我看到的是转发含有一个隐藏的表单(采用方法POST)内部页面和一个JavaScript脚本提交此表格。
这是有点老了,但在这里,我已经成功地运行以下命令:
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数据并没有太大的安全比反正获取数据。 用户仍然可以随意更改。 在会话存储它们来代替。
使用的sendRedirect没有给出任何参数,并隐藏在一个会话范围的servlet的参数,如果你需要在重定向网页中的参数,通过这个servlet使用它们。