기본 콘텐츠로 건너뛰기

라벨이 withCredentials 쿠키 이슈인 게시물 표시

CORS·JWT 조합으로 발생하는 401/403 원인별 해결 가이드

CORS·JWT 조합으로 발생하는 401/403 원인별 해결 가이드 AI 생성 이미지: CORS·JWT 조합으로 발생하는 401/403 원인별 해결 문제 정의 — CORS와 JWT가 맞닿을 때 401/403이 발생하는 이유 브라우저의 동일출처 정책과 서버의 JWT 인증 흐름이 만나는 지점에서는 주로 세 가지 계층에서 문제가 생깁니다. 첫째, CORS 사전검사(OPTIONS)가 올바르게 처리되지 않으면 요청이 서버에 도달하지 못하고 브라우저가 네트워크·보안 오류로 간주합니다. 설사 서버가 응답을 반환해도 자바스크립트에서 접근할 수 없습니다. 둘째, Authorization 헤더나 쿠키를 보내려면 서버가 Access-Control-Allow-Headers에 Authorization을 포함해야 하고, 자격증명 전송 시에는 Access-Control-Allow-Credentials: true와 명시적 Origin 설정이 필요합니다 — 와일드카드는 쓸 수 없습니다. 셋째, 요청이 서버까지 도달하더라도 JWT가 누락되거나 만료·변조된 경우 401을, 권한이 부족하면 403을 반환합니다. 즉 동일한 클라이언트 오류라도 원인은 프리플라이트(CORS) 설정, 클라이언트 전송 방식, 또는 서버의 인증·권한 검사 중 어느 쪽인지로 나뉩니다. CORS·JWT 조합으로 발생하는 401/403 원인별 해결을 빠르게 진단하려면 아래 실무 체크리스트를 참고하세요: ① 프리플라이트(OPTIONS) 응답 존재 확인 ② Access-Control-Allow-Headers에 Authorization 포함 여부 확인 ③ Allow-Credentials와 Origin 일치 여부 확인 ④ 서버에서 JWT 유효성 및 권한 검증 수행. 표시 단서: 브라우저 콘솔에 표시되는 CORS 오류는 보통 클라이언트·서버 간 설정 문제를 가리킵니다. 반면 네트워크 탭에서 401 또는 403 응답이 보이면 서버의 인증·권한 검증 실패일 가능성이 큽니다. 오류 원인 요약: Access-Control-...

API CORS 경고 없이 401/403이 반환되는 원인과 단계별 디버깅 가이드

API CORS 경고 없이 401/403이 반환되는 원인과 단계별 디버깅 가이드 AI 생성 이미지: API CORS 경고 없이 401/403 반환 원인과 디버깅 문제 정의 — 브라우저에는 CORS 경고가 없는데 401/403이 뜨는 상황 브라우저 개발자도구 네트워크 탭에 CORS 관련 오류(예: “Access-Control-Allow-Origin” 없음)가 보이지 않는데도 응답 상태가 401 또는 403으로 돌아올 수 있다. 이런 경우 브라우저가 응답을 차단하지는 않지만, 서버가 인증·권한 문제로 요청을 거부한 것이다. 아래 내용은 API CORS 경고 없이 401/403 반환 원인과 디버깅 관점에서 자주 마주치는 사례를 정리한 것이다. 클라이언트 관찰: 네트워크 탭에는 OPTIONS 프리플라이트가 통과했거나 CORS 헤더가 포함된 정상적인 요청/응답 흐름이 보이지만, 최종 응답이 401 또는 403으로 표시된다. fetch는 rejected되지 않고 응답 객체를 반환하므로(res.ok === false) 네트워크 실패와 혼동하면 안 된다. 서버 관찰: 흔한 원인으로는 토큰 만료·누락, Authorization 헤더 미전송, 세션 쿠키 미전달, 또는 CSRF 검증 실패 등이 있다. 추가로 미들웨어 순서 문제로 CORS 헤더는 응답에 붙지만 인증 로직이 먼저 실패해 요청을 거부하는 경우도 자주 발생한다. 재현 예시: curl -i -H "Authorization: Bearer x" vs curl without header → 무토큰 시 401. 브라우저에서는 fetch('/api', {credentials:'omit'})처럼 호출하면 쿠키 기반 인증이 전달되지 않아 401이 반환될 수 있다. 실무 체크리스트 — 서버 로그에서 인증 실패 사유 확인, 요청 헤더(Authorization)와 쿠키 전달 여부 점검, 프리플라이트 응답과 CORS 헤더·미들웨어 순서 검토, 토큰 만료/리프레시 정...