sendRedirect()可以代替get作为post方法吗?- jsp/servlets

xytpbqjk  于 2022-12-16  发布在  其他
关注(0)|答案(6)|浏览(267)

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

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

sendRedirect()使用的是GET方法,因为name=value显示在URL中。出于安全原因,我不希望这些值显示在URL中,因此我不希望这样。
有没有办法使用sendRedirect()来POST这些值?我尝试用POST方法来做一个表单,它隐藏了我需要的值,但仍然没有成功
请问我能做些什么?谢谢:)

0vvn1miw

0vvn1miw1#

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

1zmg4dgp

1zmg4dgp2#

这是有点旧,但在这里我已经成功地运行它:

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.8HTTP 307状态代码的说明,请参见www.example.com。

1bqhqjot

1bqhqjot3#

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

rdlzhqv94#

不,HTTP重定向将始终使用GET作为目标页面。
然而,POST数据并不比GET数据安全多少,用户仍然可以篡改它们,而是将它们存储在会话中。

guz6ccqo

guz6ccqo5#

请查看以下内容:

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

vcudknz36#

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

相关问题