6. HTTP 상태코드

2024. 8. 4. 15:39·네트워크/HTTP
목차
  1. 상태 코드
  2. 2xx - 성공
  3. 4xx - 클라이언트 오류
  4. 5xx (Server Error)
  5. 참고

상태 코드

클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능

  • 1xx (Informational): 요청이 수신되어 처리 중
    • 거의 사용 안함
  • 2xx (Successful): 요청 정상 처리
  • 3xx (Redirection): 요청을 완료하려면 추가 행동이 필요
    • HTTP redirect에서 주로 사용
  • 4xx (Client Error): 클라이언트 오류, 잘못된 문법등으로 서버가 요청을 수행할 수 없음
  • 5xx (Server Error): 서버 오류, 서버가 정상 요청을 처리하지 못함

만약 모르는 상태 코드가 나타나면?

  • 클라이언트가 인식할 수 없는 상태코드를 서버가 반환하면 클라이언트는 상위 상태코드로 해석해서 처리한다.
  • 즉 미래에 새로운 상태 코드가 추가되어도 클라이언트를 변경하지 않아도 된다.

예)

  • 299 ??? -> 2xx (Successful)
  • 451 ??? -> 4xx (Client Error)
  • 599 ??? -> 5xx (Server Error)

2xx - 성공

2xx (Successful)

클라이언트의 요청을 성공적으로 처리

  • 200 OK
  • 201 Created
    • 클라이언트가 요청을 하고 해당 요청에 따라 서버쪽에서 리소스를 생성했다는 의미다.
  • 202 Accepted
  • 204 No Content

PRG: Post/Redirect/Get

  • POST로 주문 후에 새로 고침으로 인한 중복 주문 방지
  • POST로 주문후에 주문 결과 화면을 GET 메서드로 리다이렉트
  • 새로고침해도 결과 화면을 GET으로 조회
  • 중복 주문 대신에 결과 화면만 GET으로 다시 요청

4xx - 클라이언트 오류

4xx (Client Error)

클라이언트 오류

  • 클라이언트의 요청에 잘못된 문법등으로 서버가 요청을 수행할 수 없음
  • 오류의 원인이 클라이언트에 있음
  • 중요! 클라이언트가 이미 잘못된 요청, 데이터를 보내고 있기 때문에, 똑같은 재시도가 실패

400 Bad Request

클라이언트가 잘못된 요청을 해서 서버가 요청을 처리할 수 없음

  • 요청 구문, 메시지 등등 오류
  • 클라이언트는 요청 내용을 다시 검토하고, 보내야 함
  • 예) 요청 파라미터가 잘못되거나, API 스펙이 맞지 않을 때

401 Unauthorized

클라이언트가 해당 리소스에 대한 인증이 필요함

  • 인증(Authentication) 되지 않음
  • 401 오류 발생 시 응답에 WWW-Authenticate 헤더와 함께 인증 방법을 설명

참고

  • 인증(Authentication): 본인이 누구인지 확인, (로그인)
  • 인가(Authorization): 권한부여 (ADMIN 권한처럼 특정 리소스에 접근할 수 있는 권한, 인증이 있어야 인가가 있음)
  • 오류 메시지가 Unauthorized이지만 인증 되지 않음 (이름이 아쉬움)

403 Forbidden

서버가 요청을 이해했지만 승인을 거부함

  • 주로 인증 자격 증명은 있지만, 접근 권한이 불충분한 경우

예) 어드민 등급이 아닌 사용자가 로그인은 했지만, 어드민 등급의 리소스에 접근하는 경우

404 Not Found

요청 리소스를 찾을 수 없음

  • 요청 리소스가 서버에 없음
  • 또는 클라이언트가 권한이 부족한 리소스에 접근할 때 해당 리소스를 숨기고 싶을 때

5xx (Server Error)

서버 오류

  • 서버 문제로 오류 발생
  • 서버에 문제가 있기 때문에 재시도하면 성공할 수도 있음(복구가 되거나 등등)

서버 문제로 오류 발생, 애매하면 500 오류

  • 서버 내부 문제로 오류 발생
  • 애매하면 500 오류
  • 백엔드에서 발생한 애매한 오류는 500으로 내면 된다.

서비스 이용 불가

  • 서버가 일시적인 과부하 또는 예정된 작업으로 잠시 요청을 처리할 수 없음
  • Retry-After 헤더 필드로 얼마뒤에 복구되는지 보낼 수도 있음

참고

김영한님의 모든 개발자를 위한 HTTP 웹 기본 지식 강의를 듣고 정리한 내용입니다.

https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC

'네트워크 > HTTP' 카테고리의 다른 글

5. HTTP 메서드 활용  (0) 2024.08.04
4. HTTP 메서드  (0) 2024.08.04
3. HTTP  (0) 2024.08.03
2. URI와 웹 브라우저 요청 흐름  (0) 2024.08.02
1.internet-network  (0) 2024.08.01
  1. 상태 코드
  2. 2xx - 성공
  3. 4xx - 클라이언트 오류
  4. 5xx (Server Error)
  5. 참고
'네트워크/HTTP' 카테고리의 다른 글
  • 5. HTTP 메서드 활용
  • 4. HTTP 메서드
  • 3. HTTP
  • 2. URI와 웹 브라우저 요청 흐름
an_jjin
an_jjin
공부한 내용을 정리하는 개발 기록 블로그
an_jjin
An Devlog
an_jjin
전체
오늘
어제
  • 분류 전체보기
    • JAVA
      • 초급
      • 중급1
      • 중급2
      • 고급1
    • Spring
      • 핵심 원리 기본
      • MVC1
      • MVC2
      • DB1
      • 락
      • 디자인 패턴
      • AOP
    • JPA
      • JPA 기본
      • JPA 활용 1
      • JPA 활용 2
      • Spring Data Jpa
      • JPA 정리
    • 프로젝트
      • Filmeet
      • FitTrip
      • Kidsping
    • CS
      • 기술 면접 대비 CS 전공 핵심요약집
    • 네트워크
      • HTTP
      • WebSocket
    • 데이터베이스
    • 운영체제
      • 뇌를 자극하는 윈도우즈 시스템 프로그래밍
    • Git
    • Kafka
    • Docker
    • [LG유플러스] 유레카
    • 회고

블로그 메뉴

  • 홈
  • 태그
  • 방명록

링크

공지사항

인기 글

태그

도커
before_commit
프록시 팩토리
redis
Websocket
lg 유플러스 유레카 sw 교육 후기
lg 유플러스 유레카 후기
lg 유플러스 유레카
db부하
redlock
redis 분산락
lg 유레카
스레드
transactional outbox pattern
lg 유플러스 유레카 sw 교육
선착순 응모 시스템
spring websocket
Transactional Outbox
트랜잭션 아웃박스 패턴
분산락
자바
동시성
빈 후처리기
캐시
after_commit
AOP
STOMP
queryplan
이벤트 응모 시스템
객체지향

최근 댓글

최근 글

hELLO· Designed By정상우.v4.6.1
an_jjin
6. HTTP 상태코드

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.