RECENT POSTS

최근에 작성한 글

01 / 03

전체 글

전체 보기

CORS 설정

💡 CORS Preflight(OPTIONS) 요청의 특성

브라우저가 DELETE 나 PUT 처럼 서버의 데이터를 변경할 수 있는 위험한 요청을 보낼 때 요청을 보내기 전에 내가 이 요청을 보내도 될까? 라고 물어봄(OPTIONS 메서드) → 이게 Preflight 요청

🚫 문제 발생

source.registerCorsConfiguration("/api/v1/**", config);경로 불일치 가능성

요청하는 URL 이 /api/v1/posts/1/like 인데 서버에서 이 경로를 해석하기 전 다른 루트 경로에서 먼저 OPTIONS 요청을 처리하려고 한다면 CORS 설정이 적용되지 않음

✅ 문제 해결

source.registerCorsConfiguration("/**", config);경로 불일치 가능성

CORS 루트 완화


🧠 배운점

Q. OPTIONS 요청도 /api/v1/.. 주소로 가는데 왜 / 설정이 필요한가?

  1. 보안 필터의 조기 차단 방지: Spring Security는 매우 엄격하여, 경로 매칭이 미세하게 어긋나면 OPTIONS 요청에 대해 응답을 주지 않습니다. 전역(/**) 설정은 모든 관문에서 CORS 응답을 보장
  2. 브라우저의 엄격함: DELETE 메서드는 브라우저에게 매우 민감한 작업입니다. OPTIONS 응답이 단 1%라도 설정과 맞지 않으면(예: 허용 메서드 누락, 경로 미매칭), 본 요청인 DELETE 자체를 전송하지 않아 서버 로그에는 토큰이 없는 상태(null)만 남게 됨