问题 在spring“Web应用程序”中使用浏览器后退按钮阻止用户遍历


我正在使用开发Web应用程序 spring MVC 框架工作,我想限制用户在使用我的Web应用程序时使用浏览器返回按钮。我怎么能这样做 springS'是否有任何内置功能 spring


6005
2018-03-28 15:12


起源



答案:


在应用程序中使用以下过滤器类,不要忘记在web.xml中注册此过滤器类。

import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;

public class NoBrowserCacheFilter implements Filter{

    @Override
    public void destroy() {

    }

    @Override
    public void doFilter(ServletRequest req, ServletResponse res,
            FilterChain chain) throws IOException, ServletException {
        HttpServletResponse response=(HttpServletResponse)res;
        response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
        response.setHeader("Pragma", "no-cache");
        response.setDateHeader("Expires", -1);
        chain.doFilter(req, res);
    }

    @Override
    public void init(FilterConfig arg0) throws ServletException {

    }

}

就是这样,它解决了你的问题。


13
2018-03-28 15:15



谢谢你的回复 - Rajendra_Prasad
我实现了这个,但是当你单击后退按钮时,这仍然不会使表单失效。还有一个本地缓存。我还没有找到一个解决方案,一旦提交就会使表单失效,这样即使你单击后退,表单也应该是空的,不以任何方式缓存。这有什么解决方案吗?这将避免重大的双重(甚至更多)提交。 - logixplayer


答案:


在应用程序中使用以下过滤器类,不要忘记在web.xml中注册此过滤器类。

import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;

public class NoBrowserCacheFilter implements Filter{

    @Override
    public void destroy() {

    }

    @Override
    public void doFilter(ServletRequest req, ServletResponse res,
            FilterChain chain) throws IOException, ServletException {
        HttpServletResponse response=(HttpServletResponse)res;
        response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
        response.setHeader("Pragma", "no-cache");
        response.setDateHeader("Expires", -1);
        chain.doFilter(req, res);
    }

    @Override
    public void init(FilterConfig arg0) throws ServletException {

    }

}

就是这样,它解决了你的问题。


13
2018-03-28 15:15



谢谢你的回复 - Rajendra_Prasad
我实现了这个,但是当你单击后退按钮时,这仍然不会使表单失效。还有一个本地缓存。我还没有找到一个解决方案,一旦提交就会使表单失效,这样即使你单击后退,表单也应该是空的,不以任何方式缓存。这有什么解决方案吗?这将避免重大的双重(甚至更多)提交。 - logixplayer