kkFileview 支持https

前言

2018.10有个线上项目要用在线预览功能,运维同事推荐了kkFileview,但公司线上预览是用域名https访问,所以在12月改动了代码,刚好最近有空写篇博客,供需要的参考。

1. 解决跨域(线上项目是另一个域名,访问kkFileview会出现跨域问题):

@Component
public class CorsConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("*")
                .allowCredentials(true)
                .allowedHeaders("*")
                .allowedMethods("GET", "POST", "DELETE", "PUT")
                .maxAge(3600);
    }
}

2. 过滤器设置全局属性,在此request作用域内有效。思路:判断请求地址是不是以.com结尾,是则为https域名访问,进行拼接操作,然后写入全局属性。

@Slf4j
public class ChinesePathFilter implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("UTF-8");
        StringBuilder pathBuilder = new StringBuilder();
        String requestUrl = ((HttpServletRequest)request).getRequestURL().toString();
        boolean b = true;
        if (requestUrl.contains(".com")) {
            //域名
            pathBuilder.append("https").append("://").append(request.getServerName())
                    //.append(":").append(request.getServerPort())
                    .append(((HttpServletRequest)request).getContextPath()).append("/");
        } else {
            //本机或ip访问
            b = false;
            requestUrl = requestUrl.substring(0, requestUrl.lastIndexOf("/"))+"/";
        }
        log.info("baseUrl地址:" + pathBuilder.toString());
        log.info("requestUrl:" + requestUrl);
        request.setAttribute("baseUrl", b ? pathBuilder.toString() : requestUrl);
        chain.doFilter(request, response);
    }

    @Override
    public void destroy() {

    }
}

3.  cn.keking.utils.FileUtils#doActionConvertedFile 方法中http改成https

kkFileview 支持https_第1张图片

4.  index.ftl 文件下http全改为https

kkFileview 支持https_第2张图片

5. pdf.ftl 改动如下:

kkFileview 支持https_第3张图片

部署后,就可以兼容ip访问以及https访问了,其它的日志代码就不贴了,以及https下载zip文件等等。

你可能感兴趣的:(kkFileview 支持https)