问题记录-全局配置了跨域但是后端下载仍然跨域-(Java, SpirngBoot)

问题背景

前端请求后端下载文件,其它接口都不会跨域,唯独这个下载跨域了。上代码:

java 复制代码
@ApiOperation(value = "下载模板文件", notes = "importArchive")
@GetMapping("v1/downLoadTemplate/{templateName}")
public void getTemplate(@PathVariable("templateName") String templateName, HttpServletResponse response) {
    ClassLoader classLoader = getClass().getClassLoader();
    // 罪魁祸首
    response.reset();
    response.setContentType("application/octet-stream");
    response.setHeader("Content-Disposition", "attachment; filename=" + "template" + ".xlsx");
    try (  InputStream fis = classLoader.getResourceAsStream("importer/template/规划成果档案.xlsx");
         OutputStream out = response.getOutputStream()) {
        byte[] buffer = new byte[1024];
        int len;
        while ((len = fis.read(buffer)) != -1) {
            out.write(buffer, 0, len);
        }
        out.flush();
    } catch (FileNotFoundException e) {
        throw new FileCatalogException.TemplateNotFound(templateName);
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
}

这个代码也是直接从网上粘贴的,结果就遇到坑了,这个故事告诉我们粘贴代码的时候还是要检查一下核心代码干了什么事情。
解决办法:

经过一番搜索,找到了一篇好文,和我的问题一模一样, 参考这篇文章:
https://blog.csdn.net/qq_39999478/article/details/107157324

https://blog.csdn.net/qq_39999478/article/details/107157324

这里也记录一下防止博客失效:

方案一:

java 复制代码
response.reset();
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment; filename=" + "template" + ".xlsx");
response.addHeader("Access-Control-Allow-Origin","*");

方案二:

把这个该死的reset()注释掉

java 复制代码
response.reset();

好了今天的问题记录就到这里,我继续写Bug去了。

相关推荐
haokan_Jia1 分钟前
【java使用LinkedHashMap进行list数据分组写入,顺序并没有按照原始顺序,原因分析】
java·开发语言·list
C雨后彩虹2 分钟前
中文分词模拟器
java·数据结构·算法·华为·面试
a努力。2 分钟前
蚂蚁Java面试被问:流批一体架构的实现和状态管理
java·后端·websocket·spring·面试·职场和发展·架构
计算机学姐6 分钟前
基于SpringBoot的在线骑行网站系统
java·vue.js·spring boot·后端·mysql·spring·tomcat
weixin_440730507 分钟前
04python编程笔记-01基础知识+02三种结构
java·笔记·python
Remember_9939 分钟前
【LeetCode精选算法】二分查找专题二
java·数据结构·算法·leetcode·哈希算法
空空kkk15 分钟前
Java项目从单体到微服务的演变
java·运维·微服务
程农26 分钟前
java计算机毕业设计婚纱摄影网站(附源码、数据库)
java·数据库·课程设计
BlockChain88827 分钟前
Spring框架终极入门指南(12000字深度解析)
java·后端·python·spring
青云交40 分钟前
Java 大视界 -- Java 大数据实战:分布式架构重构气象预警平台(2 小时→2 分钟)
java·java 大数据 气象预警平台·flink 实时数据清洗·spark 区域定制模型·气象灾害预警系统