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 @ 2023-01-06 10:30  阿风小子  阅读(556)  评论(0编辑  收藏  举报