springcloud下载文件的跨域问题.
时间: 2023-10-26 10:48:27 浏览: 80
关于springcloud下载文件的跨域问题,我可以为您提供帮助。对于跨域问题,可以使用CORS(跨源资源共享)解决。在springcloud中,可以通过添加如下代码来实现:
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowedMethods("GET", "POST", "PUT", "OPTIONS", "DELETE", "PATCH")
.allowedHeaders("*")
.allowCredentials(true)
.maxAge(3600);
}
}
这样可以设置所有的请求都允许跨域,并设置允许的请求方法、请求头和CORS预检请求的有效期。同时,需要在控制器中添加如下代码,设置响应头部的Access-Control-Expose-Headers:
@GetMapping("/download")
public void download(HttpServletResponse response) {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
headers.setContentDisposition(ContentDisposition.builder("attachment").filename("fileName").build());
response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
ResponseEntity<byte[]> responseEntity = new ResponseEntity<>(content, headers, HttpStatus.OK);
responseEntity.getClass().getDeclaredMethod("setRawStatusCode", int.class).invoke(responseEntity, 200);
StreamUtils.copy(responseEntity.getBody(), response.getOutputStream());
}
以上是我对于springcloud下载文件的跨域问题的回答,希望能帮到您。
阅读全文