可以的sendRedirect()作为一个POST方法,而不是得到什么? - JSP / s

2019-07-17 14:29发布

我有一个简单的形式,它接受一个用户名和密码。 我必须使用sendRedirect()方法的页面重定向到一个页面,如果不是,如果日志是有效的,另一个英寸 我需要使用sendRedirect()而不是forward() ,因为其他页面位于另一台服务器。 我注意到,当使用

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

所述sendRedirect()是使用GET方法,因为名称=值在URL被显示。 因为我不希望这些值在URL出于安全原因表明这是不可取的我。

有没有一种方法来POST使用的sendRedirect()这些价值? 我试图做的方法的形式POST隐藏了我所需要的值,但仍然没有运气

有什么事请? 谢谢 :)

Answer 1:

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



Answer 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状态码的解释。



Answer 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();


Answer 4:

看看这一次,

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


Answer 5:

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

但是,POST数据并没有太大的安全比反正获取数据。 用户仍然可以随意更改。 在会话存储它们来代替。



Answer 6:

使用的sendRedirect没有给出任何参数,并隐藏在一个会话范围的servlet的参数,如果你需要在重定向网页中的参数,通过这个servlet使用它们。



文章来源: Can sendRedirect() act as a post method instead of get? - jsp/servlets