Cors 설정을 하기 전에 잘 동작했던 액셀 다운로드 / 업로드가 안되기를 시작했다.
너무 슬프다.
api 를 호출한다.
@Override
protected void buildExcelDocument(Map<String, Object> model, Workbook workbook, HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException {
createExcel(workbook, model);
response.setCharacterEncoding("UTF-8");
response.setHeader("Content-Disposition", "attachment; filename=\"" + URLEncoder.encode("패턴_업로드_샘플.xlsx", "UTF-8") + "\";");
}
여기 스프링단에서 분명히 Content-Disposition 를 설정해줬다.
그리고 vue 단에서 Response headers 에 실린 Content-Disposition 를 확인해야 한다.
근데 response 를 console 로 찍어보는데 Content-Disposition가 보이지를 않는다.
이상한 점은 console 로는 찍히지 않지만 network 에는 노출이 된다는 점이다.
console.log
network
뒷단에 response.addHeader("Access-Control-Expose-Headers", "Content-Disposition");
추가해주니까 되었다 !
@Component
public class SimpleCORSFilter implements Filter{
private final Logger log = LoggerFactory.getLogger(SimpleCORSFilter.class);
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With, remember-me");
response.addHeader("Access-Control-Expose-Headers", "Content-Disposition");
chain.doFilter(req, res);
}
}
'개발중 > Spring' 카테고리의 다른 글
[Spring] '스프링과 스프링부트의 차이점'을 모르고 스프링 할 줄안다고 하지말기 ! (2) | 2022.09.23 |
---|---|
스프링 테스트 코드 작성하기 (1) | 2022.09.06 |
[API 설계] 서비스단에서 유효성 검사 분리하기 (0) | 2022.05.24 |
좋은 객체 지향의 다섯가지 원칙 SOLID (0) | 2022.04.11 |
스프링과 스프링 부트에 대해 알아보기 (0) | 2022.04.11 |