티스토리 뷰
HTTP 상태 코드
HTTP 상태 코드는 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능으로 크게 다섯 가지 종류로 나뉜다.
- 1xx : 요청이 수신되어 처리 중
- 2xx : 요청 정상 처리
- 3xx : 요청을 완료하려면 추가 행동이 필요
- 4xx : 클라이언트 오류, 잘못된 문법 등으로 서버가 요청을 수행할 수 없음
- 5xx : 서버 오류, 서버가 정상 요청 처리하지 못함
세부적인 상태 코드를 모르더라도 앞 글자만 보고 대략적인 메시지 의미를 파악할 수 있다.
2xx 성공
200 OK
요청이 정상 처리된 경우를 의미한다.
201 Created
요청이 성공하여 새로운 리소스가 생성된 경우다. 일반적으로 리소스를 새롭게 생성하는 POST나 PUT 요청을 하면 이 응답 코드를 받을 수 있다.
202 Accepted
요청이 전송되었으나 처리가 완료되지 않았을 때
204 No Content
요청을 성공적으로 수행했지만, 응답 본문에 보낼 데이터가 없는 경우
- Ex) 웹 문서 편집기에서 save 버튼 - 저장만 하면 되기 때문에, 결과로 아무 내용이 없어도 됨
3xx 리다이렉션
웹 브라우저는 3xx 응답을 받았을 때, 결과에 Location 헤더가 존재하면 Location 위치로 자동으로 이동한다. 이를 리다이렉트라고 한다.
영구 리다이렉션 - 301, 308
특정 리소스의 URI가 영구적으로 이동할 것을 알려준다. 원래 URL를 사용하지 않고, 검색 엔진 등에서도 변경을 인지한다.
301 Moved Permanently
- 리다이렉트 시 요청 메서드가 GET으로 변한다. 본문이 제거될 수 있다.
308 Permanent Redirect
- 리다이렉트 시 요청 메서드와 본문을 유지한다.
일시적인 리다이렉션 - 302, 307, 303
리소스의 URI가 일시적으로 변경된다.
302 Found
- 301과 같이 요청 메서드가 GET으로 변하고, 본문이 제거될 수 있다. (항상 그렇지는 않음)
307 Temporary Redirect
- 302와 같다. 하지만, 리다이렉트 시 항상 요청 메서드와 본문을 유지한다. (무조건)
303 See Other
- 302와 같다. 리다이렉트 시 요청 메서드가 항상 GET으로 변경된다.
PRG 패턴 : Post / Redirect / Get
- POST 요청 후 결과 화면을 GET 메서드로 리다이렉트
- 새로고침해도 결과 화면을 GET으로 조회
- 새로고침으로 인한 중복 요청 방지
PRG 패턴 적용 전
PRG 패턴 적용 후
304 Not Modified
- 캐시를 목적으로 사용한다.
- 클라이언트에게 리소스가 수정되지 않았음을 알려줌으로써, 클라이언트가 로컬에 저장된 캐시를 재사용하도록 한다.
- 304는 응답에 메시지 바디를 포함하면 안 된다.
4xx 클라이언트 오류
클라이언트 요청이 뭔가 잘못되어 서버가 요청을 수행할 수 없을 때 응답하는 코드이다. 오류의 원인이 클라이언트에 있다. 클라이언트가 잘못된 요청을 보낸 것이기 때문에 똑같은 재시도는 실패한다.
400 Bad Request
클라이언트의 잘못된 요청으로 인해 서버가 요청을 처리할 수 없음을 의미
- 요청 파라미터가 잘못되거나, API 스펙이 맞지 않을 때 발생한다.
401 Unauthorized
해당 리소스에 대한 인증이 필요하다는 의미
- 인증이 되지 않았을 때 발생한다.
403 Forbidden
서버가 요청을 이해했으나 승인을 거부한 것을 의미
- 인증 자격 증명은 있지만, 접근 권한이 불충분할 때 발생한다.
404 Not Found
요청 리소스를 찾을 수 없음을 의미
5xx 서버 오류
서버 문제로 오류가 발생했음을 의미한다. 서버에 문제가 발생한 것이기에 재시도하면 성공할 수도 있다.
500 Internal Server Error
서버 내부 문제로 오류가 발생함을 의미
503 Service Unavailable
서비스 이용이 불가함을 의미
- 서버가 일시적인 과부하나 예정된 작업으로 잠시 요청을 처리할 수 없게 된 상태다.
'CS > Network' 카테고리의 다른 글
DNS (0) | 2022.08.25 |
---|---|
HTTP 쿠키, 캐시 (0) | 2022.08.25 |
HTTP 원리와 지속 비지속 연결 (6) | 2022.07.07 |
인터넷과 프로토콜 (0) | 2022.06.16 |
SOP와 CORS (0) | 2022.06.13 |