springBoot文件下载跨域问题_坚持总会有奇迹的博客-CSDN博客_下载接口跨域

先说一下场景:

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

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

@Configurationpublic 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);    } }

image.png

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

image.png

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

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

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

image.png

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

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

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

image.png

如下图所示

image.png

上图所示的代码

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

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

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

image.png

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

image.png


原网址: 访问
创建于: 2022-03-15 11:55:00
目录: default
标签: 无

请先后发表评论
  • 最新评论
  • 总共0条评论