본문 바로가기

Backend/Spring | SpringBoot

[Spring Security] Header정보 추가 시점

반응형

Oauth2를 연동하면서 JWT를 발급했을때 로그에서는 확인이 되는데 Header에 안들어가서 찾아보았다.

확인해보니 생각보다 단순한 문제였는데 헤더를 수정할 수 있는 시점에 대한 문제였다.

HTTP 응답 헤더를 설정하는 코드가 응답이 커밋되기 전에 실행되어야 합니다.
만약 헤더 설정 코드가 응답 데이터가 이미 클라이언트로 전송된 후에 실행된다면, 해당 헤더는 응답에 포함되지 않습니다.
서블릿 API에서는 일단 response.getOutputStream().write() 또는 response.getWriter().print() 등의 메소드를 사용하여 응답 데이터를 출력하고 나면, 이후에 헤더를 변경하거나 추가할 수 없습니다.

 

PrintWriter writer = response.getWriter();
writer.println(json);
writer.flush();

 

원 코드에 응답을 커밋해서 출력해주는 부분이 있었는데 이 이후에 토큰을 헤더에 추가하려고 했다. 

위에 적힌 내용 그대로 응답이 커밋되어 헤더 수정은 되지 않았지만 로그를 찍는것은 내부로직처리였기 때문에 가능했던것이다.

 

➡️응답이 커밋되기 전에 헤더에 추가하여 해결

반응형

'Backend > Spring | SpringBoot' 카테고리의 다른 글

[Oauth2] 회고 1  (0) 2024.06.11
[egovFramework] spring message이용  (0) 2024.05.17
[Spring] Spring Errors  (0) 2024.05.09
[Oauth2.0] Kakao Oauth2 연동  (0) 2024.05.09
[Oauth2.0] Oauth2.0 서비스 & WebFlux  (0) 2024.05.02