피드로 돌아가기
Dev.toBackend
원문 읽기
Filter Order 조정을 통한 MCP 서버 CORS Preflight 403 에러 완전 해결
MCP Server CORS: The Preflight Problem That Broke My MCP Server 92 Times And How I Fixed It For Good
AI 요약
Context
Spring Boot 기반 MCP 서버 배포 후 HTTPS 환경에서 간헐적인 CORS Preflight 요청 실패 발생. AuthenticationFilter가 CorsFilter보다 먼저 실행되어 API Key가 없는 OPTIONS 요청을 403으로 거부하는 아키텍처적 결함 확인.
Technical Solution
@Order(Ordered.HIGHEST_PRECEDENCE)설정을 통한 CorsFilter의 실행 우선순위 최상단 배치- AuthenticationFilter의 실행 순서를
HIGHEST_PRECEDENCE + 1로 조정하여 CORS 헤더 선행 부여 구조 설계 HttpMethod.OPTIONS요청에 대해 인증 로직을 완전히 스킵하는 예외 처리 로직 구현setAllowedOriginPatterns("*")및 필수 MCP Method(GET, POST, OPTIONS) 허용 설정 적용X-Accel-Buffering등 SSE 통신을 위한 필수 Exposed Headers 설정 추가- Preflight 결과 캐싱을 위해
setMaxAge(3600L)를 적용하여 불필요한 네트워크 왕복 감소
실천 포인트
1. CORS 설정 필터가 인증 필터보다 먼저 실행되는지 @Order 순서 확인
2. 인증 필터 내부에서 OPTIONS 메서드 요청을 조건문으로 제외 처리했는지 검토
3. Localhost 환경의 CORS 관대함에 의존하지 않고 Production과 동일한 HTTPS/CORS 제약 환경에서 검증
4. SSE 등 특수 통신 사용 시 필요한 Exposed Headers가 명시적으로 설정되었는지 확인