已解决 : org.apache.catalina.connector.ClientAbortException: java.io.IOException: 你的主机中的软件中止了一个已建立的连接。

设置CROS跨域请求 进行EXCEL模板下载的时候出现了这个错误

前台报错为:

在这里插入图片描述
后台报错为:org.apache.catalina.connector.ClientAbortException: java.io.IOException: 你的主机中的软件中止了一个已建立的连接。

具体原因是因为设置过CROS跨域请求信息之后,设置浏览器下载弹出框的时候把请求头信息清除掉了,

response.reset();把这段代码注释掉就搞定了

具体代码如下

    /**
     * 设置让浏览器弹出下载对话框的Header.
     * 兼容各个浏览器下载
     */
    private static <T extends Object> void setDownloadableHeader(HttpServletResponse response,
                                                                 ExcelConfig<T> manager,
                                                                 String businessErrMsg) {
        try {
            String busiSuccess = "true";
            if (StringUtil.isEmpty(businessErrMsg)) {
                response.setCharacterEncoding("GB2312");
                String userAgent = manager.getUserAgent();
                String fileName = manager.getFileName() + ".xls";
                if (manager.getExcelVersion() == ExcelVersion.EXECL_VERSION_2007)
                    fileName += "x";
                if (userAgent.toLowerCase().indexOf("firefox") > 0) {
                    fileName = new String(fileName.getBytes("UTF-8"), "ISO8859-1");
                } else if (userAgent.toUpperCase().indexOf("MSIE") > 0) {
                    fileName = URLEncoder.encode(fileName, "UTF-8");
                } else if (userAgent.toUpperCase().indexOf("CHROME") > 0
                           || userAgent.toUpperCase().indexOf("SAFARI") > 0) {
                    fileName = URLEncoder.encode(fileName, "UTF-8");
                }
               //response.reset();
                response.setContentType("application/octet-stream");
                response.setHeader("Content-Disposition", "online; filename=\"" + fileName + "\"");
                response.setHeader("Connetion", "close");
            } else {
                Cookie msgCookie = new Cookie("busiErrMsg",
                    URLEncoder.encode(businessErrMsg, "utf-8"));
                msgCookie.setPath("/");
                response.addCookie(msgCookie);
                busiSuccess = "false";
            }
            Cookie fileDownloadCookie = new Cookie("fileDownload", busiSuccess);
            fileDownloadCookie.setPath("/");
            response.addCookie(fileDownloadCookie);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值