🌐web/HTTP 웹 기본 지식

[HTTP 웹 지식] HTTP 상태 코드

2023. 2. 22. 23:25
반응형

인프런 김영한님의 모든 개발자를 위한 HTTP 웹 지식 강의를 듣고 정리했습니다.

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

 

모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의

실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., - 강의 소개 | 인프런

www.inflearn.com

 

 

 

 

HTTP 상태 코드 소개

 

 

 

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

 

1xx (informational) : 요청이 수신되어 처리중

2xx (successful) : 요청 정상 처리

3xx (redirection) : 요청을 완료하려면 추가 행동 필요

4xx (client error) : 클라이언트 오류, 잘못된 문법 등으로 서버가 요청을 수행할 수 없음

5xx (server error) : 서버 오류, 서버가 정상 요청을 처리하지 못함

 

 

299 => 2xx

451 => 4xx 로 해석한다. 

 

 

1xx (INformational) 

- 거의 사용하지 않는다. 

 

 

2xx (successful)

200 OK

201 Created : 요청 성공해서 새로운 리소스 생성됨

202 Accepted : 요청이 접수되었으나 처리가 완료되지 않음

204 No Content : 서버가 요청을 성공적으로 수행했지만, 응답 페이로드 본문에 보낼 데이터가 없음

예) 웹 문서 편집기에서 save버튼 => 버튼 결과로 아무 내용이 없어도 된다. 

 

 

3xx (redirection)

- 요청을 완료하기 위해 유저 에이전트의 추가 조치 필요

 

redirection (리다이렉션)

- 웹 브라우저는 3xx응답 결과에 Location 헤더가 있으면, Location 위치로 자동 이동한다. 

리다이렉션 종류

 

- 영구 리다이렉션 - 특정 리소스의 URI가 영구적으로 이동

   - 301, 308

   - 원래의 URL을 사용x, 검색 엔진에서도 변경 인지

 

- 일시 리다이렉션 - 리소스의 URI가 일시적으로 변경, 따라서 검색 엔진 등에서 URL을 변경하면 안됨

   - 주문 완료 후 주문 내역 화면으로 이동

   - PRG : Post / Redirect / Get

   - 302, 307, 303

   - POST 주문 후 웹 브라우저를 새로고침하면 중복 주문이 될 수 있다. 

   - POST 주문 후에 주문 결과 화면은 GET 메서드로 리다이렉트 => 새로고침해도 결과 화면을 GET으로 조회

새로고침해도 GET으로 결과 화면만 조회한다.

302, 307, 308 어떤 것을 써야할까?

- 처음 302 스펙의 의도는 HTTP 메서드를 유지하는 것

- 그런데 웹 브라우저들이 GET으로 바꿔버림

- 모호한 302를 대신하는 307, 303이 등장함

 

현실

- 307, 303을 권장하지만 이미 많은 어플이 302를 기본값으로 사용하고 있다.

- 자동 redirection시 GET으로 변해도 되면 302를 사용해도 문제 없다. 

 

 

- 특수 리다이렉션 - 결과 대신 캐시를 사용

   - 204

 

 

300 Multiple choices: 안쓴다. 

301 Moved Permanently : redirect시 요청 메서드가 GET으로 변하고 본문이 제거될 수 있다. 

302 Found : redirect시 요청 메서드가 GET으로 변하고 본문이 제거될 수 있다. 

303 See Other : 302와 기능은 같으나 요청 메서드가 GET으로 바뀐다. 

304 Not Modified : 캐시를 목적으로 사용하며 클라이언트에게 리소스가 수정되지 않았음을 알려준다. 따라서 클라이언트는 로컬 PC에 저장된 캐시를 재사용한다. 

307 Temporary Redirect : 302와 기능이 같으나 요청 메서드와 본문이 유지된다. 

308 Permanent Redirect : 301과 기능을 같으나 redirect시 요청 메서드와 본문 유지된다. 

 

 

 

4xx (client error)

- 클라이언트의 요청에 잘못된 문법등으로 서버가 요청을 수행할 수 없음

- 오류의 원인이 클라이언트에 있음

- 재시도해도 계속 오류임

 

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

예) 요청 파라미터가 잘못되거나, API 스펙이 맞지 않을 때

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

401 오류 발생시 응답에 WWW-Authenticate 헤더와 함께 인증 밥법을 설명한다. 

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

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

404 Not Found - 요청 리소스를 찾을 수 없음

 

*참고

Authentication (인증) : 본인이 누구인지 확인 (로그인)

Authorication (인가) : 권한 부여

오류 메시지가 Unauthorized이지만 인증이 되지 않음 Unahthentication이어야함 (이름이 아쉬움)

 

 

 

5xx (server error)

- 서버에 문제가 있기 때문에 재시도하면 성공할 수 있음

 

500 internal server error - 서버 문제로 오류 발생, 애매하면 500오류

503 service unavailable - 서비스 이용 불가 (retry-after 헤더 필드로 얼마뒤에 복구되는지 보낼 수 있음)

 

반응형
저작자표시 (새창열림)

'🌐web > HTTP 웹 기본 지식' 카테고리의 다른 글

[HTTP 웹 지식] HTTP 헤더2 - 캐시와 조건부 요청  (0) 2023.02.27
[HTTP 웹 지식] HTTP 헤더1- 일반 헤더  (0) 2023.02.23
[HTTP 웹 지식] HTTP 메서드, 메서드 활용  (0) 2023.02.21
[HTTP 웹 지식] HTTP 기본  (1) 2023.02.20
[HTTP 웹 지식] 인터넷 네트워크와 URL, 웹 브라우저 요청 흐름  (0) 2023.02.17
'🌐web/HTTP 웹 기본 지식' 카테고리의 다른 글
  • [HTTP 웹 지식] HTTP 헤더2 - 캐시와 조건부 요청
  • [HTTP 웹 지식] HTTP 헤더1- 일반 헤더
  • [HTTP 웹 지식] HTTP 메서드, 메서드 활용
  • [HTTP 웹 지식] HTTP 기본
pkyung
pkyung
pkyung
성장하는 중
pkyung
전체
오늘
어제
  • 분류 전체보기
    • 🏆토이 프로젝트에서 생긴 일
    • 🤿백엔드 내실 채우기
    • 🍫카카오 테크 캠퍼스 2기 BE
    • 🍀spring
      • 스프링 입문
      • 스프링 핵심원리 기본
      • 스프링 jpa
      • 🐛debug
    • 🔒보안
    • 🌎infra
      • docker
      • kubernetes
      • cloud
    • 🌐web
      • HTTP 웹 기본 지식
    • 🔑알고리즘
      • baekjoon
      • programming language
    • 🎞️프로젝트
      • android
      • flutter
    • 📚수업
      • 교양과목
    • 💾database
    • ⚙settings
    • 2023 여름 모각코 - 절개와지조
    • 2024 겨울 모각코 - 내 장점은 algorit..

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 코드리뷰
  • 객체지향의사실과오해
  • Java
  • 스택
  • 객체지향
  • 카카오테크캠퍼스
  • Docker
  • be
  • 자바
  • 카테캠
  • python
  • Security
  • sql
  • spring
  • 스프링
  • 소수
  • 스프링부트
  • 백준
  • 스프링기본
  • 문자열
  • BFS
  • HTTP
  • springboot
  • 자바문자열
  • JPA
  • mysql
  • 김영한
  • 데이터베이스
  • 파이썬
  • nginx

최근 댓글

최근 글

hELLO · Designed By 정상우.
pkyung
[HTTP 웹 지식] HTTP 상태 코드
상단으로

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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