在我的春季项目中,我使用下面的拦截器解决了后门问题。
public class SampleInterceptor implements HandlerInterceptor
{
public SampleInterceptor() {
}
@Override
public void afterCompletion(HttpServletRequest arg0,
HttpServletResponse arg1, Object arg2, Exception arg3)
throws Exception {
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response,
Object object, ModelAndView model) throws Exception {
if(request.getMethod().equals("GET"))
{
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
response.setDateHeader("Expires", 0);
}
else if(request.getMethod().equals("POST"))
{
System.out.println("After post request : ");
}
}
}
我已经清除了所有请求的浏览器缓存,除了post.Now用户注销并单击后退它不会仅仅为获取请求转到应用程序。但是请求它转到application.how我避免了这个问题post request。如果我清除了浏览器缓存的帖子请求,它会要求确认表单提交。如何解决这个问题?任何帮助将不胜感激!!
答案 0 :(得分:0)
可以通过使用AJAX而不是表单提交来避免。使用AJAX POST提交您的请求。
另请参阅以下网址了解更多详情: 1. Prevent Back button from showing POST confirmation alert
答案 1 :(得分:0)
发布将始终要求提交表单。
使用AJAX帖子发布您的数据,然后在收到回复时重定向或提交构建get请求的数据。
请注意,当某人返回更新或插入数据的页面时。数据将重新发布到服务器,并可能导致重复插入/更新。如果你愿意,请处理这类案件。