web_cors 감지절차
🔎 CORS 감지 절차
정의
CORS 문제는 브라우저 콘솔, Network 탭, Preflight 요청, 서버 응답 헤더 순서로 확인하면 원인을 빠르게 좁힐 수 있다.
브라우저에서만 막히는지, 서버 설정이 부족한지, 프록시나 보안 설정이 개입했는지를 단계적으로 확인하는 문서다.
🧭 먼저 볼 것
- 브라우저 Console
- Network 탭
- Preflight OPTIONS 요청
- 서버 응답 헤더
- curl 재현 요청
🧪 브라우저 콘솔 확인
- 콘솔 에러 메시지를 먼저 확인한다.
Access-Control-Allow-Origin관련 메시지가 있으면 CORS 가능성이 높다.blocked by CORS policy문구가 보이면 우선 CORS 설정을 의심한다.
🌐 Network 탭 확인
- 실제 요청과 OPTIONS 요청의 상태 코드를 확인한다.
- Origin, Response Headers, Redirect 여부를 함께 본다.
- 실제 요청 전에 Preflight가 발생했는지 확인한다.
- 응답 헤더에
Access-Control-Allow-Origin,Access-Control-Allow-Methods,Access-Control-Allow-Headers,Access-Control-Allow-Credentials가 있는지 확인한다.
🛠️ Preflight 실패 분류
- 401/403으로 실패하는 경우
- 200이지만 실제 요청이 차단되는 경우
- 301/302 리다이렉트 때문에 실패하는 경우
- OPTIONS 요청이 Spring Security나 프록시에서 막히는지 확인한다.
🧰 curl로 재현
curl -i "https://api.example.com/v1/health" -H "Origin: https://web.example.com"
curl -i -X OPTIONS "https://api.example.com/v1/resource" -H "Origin: https://web.example.com" -H "Access-Control-Request-Method: POST" -H "Access-Control-Request-Headers: authorization,content-type"
브라우저 없이 서버가 어떤 헤더를 내려주는지 직접 확인할 때 유용하다.
⚠️ 운영 체크리스트
- 프런트와 API 도메인이 다른지 확인
- Nginx/ALB/Gateway에서 헤더를 변경하는지 확인
- Spring Security가 OPTIONS를 막는지 확인
- credentials 사용 여부와
Allow-Origin설정을 함께 확인 - 허용 Origin을 너무 넓게 열지 않았는지 확인
📌 정리
- 콘솔에서 1차 오류를 확인한다.
- Network 탭에서 실제 요청과 Preflight를 확인한다.
- curl로 서버 응답을 재검증한다.
- 최종적으로 프록시, 보안 설정, Spring CORS 설정 순서로 좁혀간다.
댓글남기기