

Future Engineering
기술의 최전선을 기록합니다.
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 정책을 코드 수정 없이 설정 파일 변경만으로 관리할 수 있어, 다양한 배포 환경에 신속하고 유연하게 대응할 수 있다.