SpringBoot 可能存在重定向过滤问题

在此处的其他问题之一中,我读到这是某物在其他地方损坏的症状。问题是,我的整个 SpringBoot 应用程序只为一些HTML带有翻译的页面提供服务。没有什么花哨。然后,我挖掘更多的转化项目,我发现某种以便从用户重定向实现滤波器HTTP来HTTPS。我想这是问题的根本原因,但我很难理解为什么。


@Component

public class HttpsRedirectionFilter extends GenericFilterBean {


    @Override

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {

        HttpServletRequest httpRequest = (HttpServletRequest) request;

        HttpServletResponse httpResponse = (HttpServletResponse) response;

        String protocol = httpRequest.getHeader("x-forwarded-proto");

        if ("http".equalsIgnoreCase(protocol)) {

            String redirectURL = "https://" + httpRequest.getServerName() + httpRequest.getRequestURI();

            httpResponse.sendRedirect(redirectURL);

        }

        filterChain.doFilter(request, response);

    }

}

尝试调试它(这不是超级容易,因为我没有在本地安装任何证书),我看到每次访问都多次调用此方法(4-5)。任何人都可以请指出我的错误并向我解释为什么它会产生如此多的异常?


守候你守候我
浏览 314回答 1
1回答

撒科打诨

尝试这个,if ("http".equalsIgnoreCase(protocol)) {    String redirectURL = "https://" + httpRequest.getServerName() + httpRequest.getRequestURI();    httpResponse.sendRedirect(redirectURL);} else {    filterChain.doFilter(request, response);}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java