Header Banner
GG Logo

Future Engineering

기술의 최전선을 기록합니다.

기술 자료/BackEnd/CorsFilter 설정 및 기능

CorsFilter 설정 및 기능

BackEnd29일 전

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를 상속하여, 복잡한 필터 체인 내에서도 각 요청에 대해 단 한 번만 실행되도록 보장하여 성능 저하를 방지합니다.

 

동작 방식

필터의 동작 흐름은 다음과 같습니다.

  1. 요청 수신: 클라이언트로부터 HTTP 요청이 들어옵니다.

  2. CORS 헤더 설정

    • Access-Control-Allow-Origin: 요청을 허용할 출처

    • Access-Control-Allow-Methods: 허용된 HTTP 메서드 목록

    • Access-Control-Allow-Headers: 허용된 요청 헤더 목록

    • Access-Control-Allow-Credentials: 쿠키 등 자격 증명 정보의 전송 허용 여부

  3. 프리플라이트 요청 분기 처리

    • 만약 요청 메서드가 OPTIONS이면, 이는 프리플라이트 요청이므로 200 OK 상태 코드로 즉시 응답하고 필터 체인을 종료합니다.

  4. 실제 요청 처리

    • OPTIONS 외 다른 메서드(GET, POST 등)의 요청일 경우, CORS 헤더가 적용된 상태로 다음 필터 체인을 계속 진행하여 실제 비즈니스 로직을 처리하도록 전달합니다.

 

CorsFilter는 현대 웹앱에서 중요한 역할

  • 보안 강화: 허용된 출처와 메서드만 리소스에 접근하도록 제한하여 비인가 접근을 차단하고 보안을 강화

  • OAuth 2.0 등 외부 인증 연동 지원: 소셜 로그인 등 외부 인증 서비스와의 리다이렉션 과정에서 발생하는 CORS 이슈를 해결하여 인증 흐름이 끊기지 않도록 보장

  • 개발 및 운영 효율성 증대: CORS 정책을 코드 수정 없이 설정 파일 변경만으로 관리할 수 있어, 다양한 배포 환경에 신속하고 유연하게 대응할 수 있다.

키워드

Spring Boot CORS 필터 구현Spring Security CORS 설정CORS Preflight 요청 처리