스프링
스프링부트에서 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" 이렇게 명시적으로 적어줘야한다.