CORS 오류를 재현하고 확인하는 순서
예를 들어 프론트엔드가 https://app.example.com, API가 https://api.example.com이면 Allowed Origins에는 프론트엔드의 출처를 넣습니다. 경로가 포함된 /login 주소가 아니라 프로토콜·호스트·포트 조합입니다.
- 브라우저 개발자 도구에서 실패한 요청과 OPTIONS 요청을 찾습니다.
- 요청의 Origin과 응답의 Access-Control-Allow-Origin이 일치하는지 확인합니다.
- JSON POST 또는 Authorization 같은 비단순 헤더를 쓰면 사전 요청이 필요할 수 있습니다. 필요한 메서드와 헤더가 모두 허용되는지 확인합니다.
- 쿠키를 사용하면 클라이언트의 credentials, 서버의 Allow-Credentials, 쿠키의 SameSite·Secure 설정을 함께 확인합니다.
Origin을 허용해도 로그인 인증이나 권한 검사는 따로 필요합니다. CORS는 브라우저의 응답 읽기 규칙이며 서버 접근 제어나 CSRF 방어를 대신하지 않습니다.
캐시 정책 선택 예제
- 로그인 후 내 정보: 인증 쿠키 사용 + no-store. 사용자마다 다른 응답을 public 캐시로 공유하지 않습니다.
- 모든 사용자에게 같은 카테고리: 쿠키 없음 + public 1시간. 갱신 주기와 캐시 무효화 방법을 먼저 정합니다.
- Origin별 다른 응답: Vary: Origin을 유지하고 CDN이 이를 어떻게 처리하는지 확인합니다.
no-cache는 저장 금지가 아니라 재사용 전 재검증입니다. 저장하지 않으려면 no-store를 사용합니다. Max-Age는 사전 요청의 캐시 시간이며 브라우저가 적용하는 상한은 다를 수 있습니다.