웹 공부하기/HTTP

[인프런] 모든 개발자를 위한 HTTP 웹 기본 지식 (HTTP 상태코드 - 4xx, 5xx)

HTTP 상태코드 중, 4xx 오류와 5xx 오류에 대해 알아보자.

4xx - 클라이언트 오류

400대 상태코드는 클라이언트의 요청에 잘못된 문법 등으로 서버가 요청을 수행할 수 없을 때를 뜻한다. 즉, 오류의 원인이 클라이언트한테 있다는 것이다. 이때, 같은 요청을 계속 재시도해도 이미 클라이언트 단에서 잘못된 요청과 데이터를 보내고 있기 때문에 요청에 실패한다.

  • 400 Bad Request: 클라이언트가 잘못된 요청을 해서 서버가 요청을 처리할 수 없다. 클라이언트는 요청 내용을 검토하고 다시 보내야한다. ex) 요청 파라미터가 숫잔데 문자로 보낸다거나, API 스펙이 맞지 않는다거나 ...
  • 401 Unauthorized: 클라이언트가 해당 리소스에 대한 인증이 필요하다. 여기서 인증은 로그인을 의미하며, 서버는 응답에 WWW-Authenticate 헤더와 함께 인증 방법 설명을 보내준다.
  • 403 Forbidden: 서버가 요청을 이해했지만 승인을 거부한다. 로그인은 했으나, 접근 권한이 불충분한 경우이다. ex) 관리자가 아닌 사용자가 로그인은 했으나, 관리자 페이지에 접근할 경우
  • 404 Not Found: 요청 리소스를 찾을 수 없다. 클라이언트가 요청하는 리소스가 서버에 없다는 것이다. 또는 클라이언트가 권한이 부족한 리소스에 접근할 때, 서버는 해당 리소스에 대한 권한이 부족하다고 알려주기 싫어서 아예 없는 것처럼 숨기고 싶은 경우에도 해당 상태코드를 보낸다.

5xx - 서버 오류

500대 상태코드는 서버 문제로 발생하는 오류를 뜻한다. 완전한 서버 문제이기에, 서버가 복구되는 등 서버의 문제가 해결되고나서 재시도를 하면 요청을 성공할 수 있다.

  • 500 Internal Server Error: 서버 내부 문제로 오류 발생, 애매한 경우에 500 오류를 내림
  • 503 Service Unavailable: 서비스 이용 불가 → 서버가 일시적인 과부하 또는 예정된 서버 작업으로 잠시 요청을 처리할 수 없음
    • Retry-After 헤더 필드로 얼마뒤에 복구되는지 보낼 수도 있음

출처: [인프런] 모든 개발자를 위한 HTTP 웹 기본 지식