스프링

스프링부트에서 HttpResponse 헤더 객체를 React Client에 보내기.

jdy8739 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" 이렇게 명시적으로 적어줘야한다.