我有一个简单的表单,它接受用户名和密码。如果登录有效,我必须使用sendRedirect()
方法将页面重定向到一个页面,如果没有,则必须使用另一个页面。我需要使用sendRedirect()
而不是forward()
,因为其他页面位于另一台服务器中。我注意到使用
response.sendRedirect(response.encodeRedirectURL("FileName.jsp?paramName=" +value));
sendRedirect()
正在使用GET
方法,因为name = value正在显示在网址中。这对我来说是不可取的,因为出于安全原因,我不希望这些值显示在URL中。
使用sendRedirect()有没有办法POST
这些值?
我尝试使用方法POST
来创建一个隐藏我需要的值但仍然没有运气的表单
我能做什么?谢谢:))
答案 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使用它们。