springBoot文件下载跨域问题

先说一下场景:

项目有一个需求,就是实现一个,多文件下载成一个 .zip压缩包文件

 

代码,写好了,并且也配置好了全局的跨域设置,如下代码所示

@Configuration
public class SimpleCORSFilter {

@Bean
public CorsFilter corsFilter() {
final UrlBasedCorsConfigurationSource urlBasedCorsConfigurationSource = new UrlBasedCorsConfigurationSource();
final CorsConfiguration corsConfiguration = new CorsConfiguration();
/*是否允许请求带有验证信息*/
corsConfiguration.setAllowCredentials(true);
/*允许访问的客户端域名*/
corsConfiguration.addAllowedOrigin("*");
/*允许服务端访问的客户端请求头*/
corsConfiguration.addAllowedHeader("*");
/*允许访问的方法名,GET POST等*/
corsConfiguration.addAllowedMethod("*");
urlBasedCorsConfigurationSource.registerCorsConfiguration("/**", corsConfiguration);
return new CorsFilter(urlBasedCorsConfigurationSource);
}

}

 

 

在本地跑没问题,觉得万事大吉了,很开心

 

 

 

 

然后发布到公司测试服务器

 

 

然后问题来了,前端的哥们找我说,我写的批量下载接口跨域了

 

我心里纳闷,不会呀,项目已经设置了全局的跨域的配置,怎么只有这个批量下载的接口跨域了

 

 

找了很久原因,度娘也问了很久,度娘的答案也是绝大部分都是抄来抄去,基本没什么营养

最后实在没办法,就找公司的大牛,他和我说,是不是我批量下载的接口,把全局的跨域配置给清空了

然后,我又仔细去看了一下代码,终于发现了问题的最终原因

 

 

如下图所示

 

 

 

上图所示的代码

response.reset(); //这句代码是罪魁祸首,他会清空响应的一些信息,包括全局的跨域配置

所以解决办法是:(选择一个即可)

1、把 response.reset(); 注释掉,如下代码所示

 

 

 

2、response.reset(); 不注释,并且配置如下

 

posted @   阿风小子  阅读(561)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示