dev.syw
네트워크 · API

401 Unauthorized 오류 해결 (인증 실패)

GET /api/... 401 (Unauthorized)

#HTTP#401#인증#토큰#Authorization

증상

요청이 다음 상태 코드로 거부됩니다.

GET https://api.example.com/me 401 (Unauthorized)

원인

인증 정보가 없거나 유효하지 않다는 뜻입니다(누구인지 확인 불가). 권한 부족(인가)인 403 Forbidden과는 다릅니다. 흔한 원인:

해결

1) 토큰을 올바른 형식으로 전송

const res = await fetch('/api/me', {
  headers: { Authorization: `Bearer ${token}` }, // 'Bearer ' 공백 포함
});
JavaScript

2) 토큰 만료 확인

저장된 토큰이 만료됐을 수 있습니다. JWT라면 JWT 디코더exp를 확인하세요. 만료 시 재발급(refresh) 후 재시도합니다.

3) 쿠키 기반 인증

fetch('/api/me', { credentials: 'include' }); // 쿠키 동봉
JavaScript

서버는 Access-Control-Allow-Credentials: true가 필요합니다(CORS 참고).

4) 실제로 보내지는지 확인

브라우저 Network 탭 → 해당 요청 → Request Headers에서 Authorization이 실제로 붙어 나가는지 확인합니다.

401은 "로그인 정보 문제", 403은 "로그인은 됐지만 권한 없음"입니다. 둘을 구분하면 원인을 빨리 좁힐 수 있습니다.

← 에러 해결 모음으로 돌아가기