Access-Control-Expose-Headers (헤더 접근)

Hyun·2024년 2월 3일
0

Spring

목록 보기
34/38
post-thumbnail

Access-Control-Expose-Headers

Access-Control-Expose-Headers 라는 이름의 헤더는 서버가 보내는 응답에 포함된 헤더들 중, 클라이언트가 접근할 수 없는 헤더들에 대해 접근할 수 있도록 설정하는 헤더이다.

클라이언트와 서버가 서로 다른 서버를 가진 경우, 기존에는 보안상의 문제로 클라이언트가 다른 출처의 서버로 요청하는것을 제한했었다. 그러나 이에 대해 유연하게 대처하고자 교차 출처 리소스 공유(Cross-Origin Resource Sharing, CORS) 정책이 등장했다.

따라서 개발자가 CORS 를 허용한다면 개발자가 지정한 제한된 출처 범위 내에서 서로 다른 출처간의 통신이 가능하다.

기본적으로 클라이언트는 CORS 정책 사용 시, 아래와 같은 헤더에만 접근이 가능하다.

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

따라서 예를 들어, 로그인 성공 시, 서버가 발급한 토큰을 응답으로 'Authorization' 헤더에 담아 보낼 때 기본적으로 클라이언트는 'Authorization' 헤더에 접근할 수 없다.

그러므로 Access-Control-Expose-Headers 헤더에 Authorization 헤더의 이름을 추가하여 클라이언트가 접근할 수 있도록 서버측에서 응답을 보내기 전에 설정해주어야 한다.

예시

String token = jwtUtil.createJwt(username, role, 60 * 60 * 30L);
System.out.println("token: " + token);
response.addHeader("Access-Control-Expose-Headers", "Authorization");
response.addHeader("Authorization", "Bearer " + token);
profile
better than yesterday

0개의 댓글