CorsFilter 설정 및 기능
CorsFilter는 다른 출처(도메인, 프로토콜, 포트)의 프론트엔드 애플리케이션이 백엔드 API와 원활하게 통신할 수 있도록 보안 정책을 적용하는 핵심 구성요소입니다.
주요 기능
CORS 헤더 자동 적용: 모든 HTTP 응답에 CORS 관련 헤더(
Access-Control-Allow-Origin등)를 추가하여 브라우저의 동일 출처 정책(Same-Origin Policy)을 안전하게 우회하도록 허용합니다.설정의 외부화:
application.yml과 같은 외부 설정 파일에서 CORS 정책을 손쉽게 관리할 수 있습니다. 이를 통해 개발, 테스트, 운영 환경별로 다른 정책을 유연하게 적용할 수 있습니다.허용된 출처 (Origin):
http://localhost:3000(기본값)허용된 HTTP 메서드:
GET, POST, PUT, DELETE, OPTIONS(기본값)허용된 헤더:
Authorization, Content-Type(기본값)자격 증명 (Credentials) 허용:
true(기본값)
Preflight Request 처리: 실제 요청 전 브라우저가 서버의 CORS 정책을 확인하기 위해 보내는
OPTIONS메서드 요청(프리플라이트)을 감지하고, 즉시200 OK로 응답하여 불필요한 서버 부하를 줄입니다.요청 당 한 번 실행 보장:
OncePerRequestFilter를 상속하여, 복잡한 필터 체인 내에서도 각 요청에 대해 단 한 번만 실행되도록 보장하여 성능 저하를 방지합니다.
동작 방식
필터의 동작 흐름은 다음과 같습니다.
요청 수신: 클라이언트로부터 HTTP 요청이 들어옵니다.
CORS 헤더 설정
Access-Control-Allow-Origin: 요청을 허용할 출처Access-Control-Allow-Methods: 허용된 HTTP 메서드 목록Access-Control-Allow-Headers: 허용된 요청 헤더 목록Access-Control-Allow-Credentials: 쿠키 등 자격 증명 정보의 전송 허용 여부
프리플라이트 요청 분기 처리
만약 요청 메서드가
OPTIONS이면, 이는 프리플라이트 요청이므로200 OK상태 코드로 즉시 응답하고 필터 체인을 종료합니다.
실제 요청 처리
OPTIONS외 다른 메서드(GET, POST 등)의 요청일 경우, CORS 헤더가 적용된 상태로 다음 필터 체인을 계속 진행하여 실제 비즈니스 로직을 처리하도록 전달합니다.
CorsFilter는 현대 웹앱에서 중요한 역할
보안 강화: 허용된 출처와 메서드만 리소스에 접근하도록 제한하여 비인가 접근을 차단하고 보안을 강화
OAuth 2.0 등 외부 인증 연동 지원: 소셜 로그인 등 외부 인증 서비스와의 리다이렉션 과정에서 발생하는 CORS 이슈를 해결하여 인증 흐름이 끊기지 않도록 보장
개발 및 운영 효율성 증대: CORS 정책을 코드 수정 없이 설정 파일 변경만으로 관리할 수 있어, 다양한 배포 환경에 신속하고 유연하게 대응할 수 있다.