ahnnyung ,/Spring Rest API

[Spring Rest API] axios로 파일 다운로드 시 Content-Disposition 헤더 사용기 (헤더 추가해서 보냈는데 받는 쪽에서 제대로 안받아 질 때)

hi,ho 2020. 11. 20. 10:27
반응형

Controller 코드 중 일부

위는 작성한 Controller 코드 중 일부분이다. Content-Disposition 헤더를 추가하여 파일명을 붙여보내는 메소드이고, postman으로 테스트해볼때는 문제가 없었다.

그런데, 프론트 작업을 하는 친구로부터 제대로 전달되지 않는다고 얘기를 들었다. 해당 header값이 없다고한다.

 

뭐지?? 분명 postman으로 올바르게 동작하는 걸 확인했는데...

곧장 프론트 작업하는 친구에게 달려가 같이 확인해보았다.

 

chrome DevTools로 확인한 Response Headers 내용. Content-Disposition이 올바르게 추가되어있는 것을 확인할 수 있다.

함께 브라우저(chrome)로 확인해본 결과 올바르게 전달이 되는 것을 확인할 수 있음에도 프론트 코드에서 해당 header를 찾을 수 없다는 오류가 지속적으로 발생했다. 여기서 1차 멘붕.

 

관련한 여러 키워드로 검색해보니 CORS 문제라고 하는데... 나는 분명 처리를 해줬다고 생각했었다.  2차 멘붕

해당 Controller에 적용된 기존 CrossOrigin어노테이션

더 찾아본 결과.. CrossOrigin 어노테이션의 properties 중 exposedHeaders라는 놈이 있었다. 이놈에 대한 이슈였다.

 

기본적으로 브라우저가 접근 가능한 헤더는 다음 6개와 같다.

  • Cache-Control
  • Content-Language
  • Content-Type
  • Expires
  • Last-Modified
  • Pragma

이외에 다른 헤더를 추가하여 접근하고 싶을 때는 exposedHeaders 값으로 해당 헤더의 key를 추가해주는 작업을 해주어야만 올바르게 작동한다.

exposedHeaders가 추가된 모습

오늘의 삽질 끝.

 

 

 

참고링크 - howtodoinjava.com/spring5/webmvc/spring-mvc-cors-configuration/

 

 

 

 

반응형