[英]IE Back Button issue in jsp
我在test1.jsp上有2个jsp页面test1.jsp和test2.jsp,我正在发布一些数据,它将重定向到test2.jsp。 但是如果我单击test2.jsp,即单击浏览器后退按钮,那么它显示的网页已过期,因此如何继续单击后退按钮来显示test1.jsp? 我在IE浏览器中遇到此问题。
因此,您实际上不是在重定向请求,而只是POST
(和转发)请求。 每当尝试从浏览器历史记录中获取未缓存的POST
请求时,即会获得此错误页面。
您实际上需要在 POST
之后 重定向请求。 这称为POST-Redirect-GET模式 。 假设您的Web应用程序设计合理,并且您正在使用Servlet
来控制,预处理和后处理请求,那么您所需要做的就是调用HttpServletResponse#sendRedirect()
而不是RequestDispatcher#forward()
:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Postprocess request parameters here.
// Finally redirect POST request to a brand new GET request.
response.sendRedirect("result.jsp");
}
这样, POST
请求将不会出现在浏览器历史记录中。 按下后退按钮将不再获得POST
请求,而是获得在其之前调用的请求(即用于打开/查看带有表单的页面的请求)。
唯一需要注意的是,初始请求(包括所有参数和属性)也会消失,因此您无法在结果页面中使用它们。 如有必要,您可以通过使用会话作用域或重定向URL中的querystring / pathinfo解决此问题。
顺便说一下,这个特定的“问题”不是MSIE特有的。 其他浏览器的行为相同,但是它们只会给出一些不同的错误/警告消息。 将来,在明确指出MSIE是根本原因之前,请使用其他浏览器进行测试。
看一下“ 邮寄后重定向”模式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.