ABOUT ME

Today
Yesterday
Total
  • 스프링부트에서 HttpResponse 헤더 객체를 React Client에 보내기.
    스프링 2022. 4. 25. 11:54
    HttpHeaders headers = new HttpHeaders();
    headers.set("token", auth);
    headers.set("Access-Control-Expose-Headers", "*");
    
    return ResponseEntity.ok()
            .headers(headers)
            .body(null);

    프로젝트를 진행하던 도중, Http객체의 헤더 안에 넣어 보내려고한 정보가 막상 클라이언트에서 받아지지않는 문제가 있었다.

    위 코드처럼 headers에 token을 담아 보냈음에도불구하고

    사진처럼 headers에는 아무값도 담기지않았다.

     

    결론적으로 저 headers에는 content-length 만이 아닌 더 많은 정보가 담겨야하는데,

    딱 content-length 만 headers에 담겨져있는 모습을 볼 수 있다.

     

    그 이유는 브라우저에서 접근할 수 있는 headers의 정보를 서버에서 제한하기때문인데,

    이 제한을 풀기위해 스프링부트(서버)에서 headers를 리턴할 때 무언가를 조작해줄 필요가 있었다.

     

    headers.set("Access-Control-Expose-Headers", "*");

    결과는 이 key, value 값을 headers에 추가하면 해결이 되는데,

     

    브라우저에서 접근할 수 있는 headers 정보를 서버의 화이트리스트에 추가한다는 뜻이다.

     

    즉, *로 모든 제한을 푼다고 보면 되겠다.

     

    그 결과 이렇게 headers에 모든 값들이 출력된다.

     

    참고로 내가 출력하고자한 위의 사진 예시의 key는 token인데,

    key이름이 Authorization이라면 *, "Authorization" 이렇게 명시적으로 적어줘야한다.

Designed by Tistory.