티스토리 뷰
상태코드는 서버로부터 request 결과를 전달하는 코드이다.
상태코드 | 클래스 | 설명 |
1xx | Informational | 요청을 받아들여 처리중 |
2xx | Successful | 요청 정상 처리 |
3xx | Redirection | 요청을 완료하기 위해 추가 동작이 필요 |
4xx | Client Error | 클라이언트 오류, 서버가 요청을 이해불가 |
5xx | Server Error | 서버오류, 서버가 정상 요청 처리불가 |
100번대 코드는 거의 사용하지 않는다. 상태코드는 세부적으로 나뉘지만 몇 번대의 코드인가가 가장 중요하다.
2xx 성공
클라이언트의 요청이 성공적으로 처리되었다.
코드번호 | 상태 | 설명 |
200 | OK | 요청성공 |
201 | Created | 요청을 성공해서 새로운 리소스가 생성됨(Location 헤더 필드로 식별가능) |
202 | Accepted | 요청이 접수되었으나 처리가 완료되지 않음(이후 처리예정) |
204 | No Content | 요청을 수행했으나 응답 본문에 보낼 데이터가 없음 (예시 - save기능) |
3xx 리다이렉션
요청이 정상처리되기 위해 브라우저 측에서 특별한 처리가 수행되야함을 나타낸다. 웹 브라우저는 3xx 결과에 Location 헤더가 있으면 해당 위치로 자동 이동한다. 300 Multiple Choices는 거의 안 쓴다.
구분 | 상태코드 | 이름 | 설명 |
영구 리다이렉션 (리소스의 URI가 영구적 변경) |
301 ✨ | Moved Permanently | 리다이렉트시 요청 메소드가 GET으로 변하고 본문이 제거될 수 있음(대부분 GET으로 변하고 제거됨) |
308 | Permanent Redirect | 리다이렉트시 요청 메소드와 본문을 유지 | |
일시 리다이렉션 (리소스의 URI가 일시적으로 변경) |
302 ✨ | Found | 리다이렉트시 요청 메소드가 GET으로 변하고 본문이 제거될 수 있음(대부분 GET으로 변하고 제거됨) |
307 | Temporary Redirect | 리다이렉트시 요청 메소드와 본문을 유지 | |
303 | See Other | 리다이렉트시 요청 메소드가 GET으로 변경됨(확실) | |
특수 리다이렉션 | 304 ✨ | Not Modified | 캐시를 목적으로 사용됨, 응답에 메세지 바디를 포함하면 안 됨 |
대다수의 경우 301, 302를 사용한다고 한다. GET으로 바뀔 수 있음이지만 대다수의 브라우저에서 GET으로 바뀌게 설정되어 있다고 한다.
PRG(Post/Redirect/Get)
중복 Post를 방지하는 방법이다. 새로고침하면 Post가 중복 발생하는데 PRG를 사용하여 302를 돌려주면 브라우저는 결과 화면으로 다이렉트되어 Get 요청만 하게 되므로 Post 중복 발생을 줄인다.
예를 들어 온라인 쇼핑을 할 때, 주문을 Post로 넣으면 서버는 302를 돌려준다. 브라우저는 같은 페이지가 아닌 주문 완료 페이지로 리다이렉션 시킨다. 여기서 새로고침을 하면 Get 요청만 되기 때문에 Post의 중복 발생이 일어나지 않고 Get 요청에 따른 주문 완료 현황만 보여줄 수 있다.
4xx 클라이언트 오류
클라이언트 오류(잘못된 문법 등)로 서버가 요청을 이해할 수 없음을 의미한다.
코드번호 | 이름 | 설명 |
400 | Bad Request | 클라이언트의 잘못된 요청으로 서버가 처리불가(요청구문, API 스펙, 메세지 등의 오류) |
401 | Unauthorized | 클라이언트가 해당 리소스에 대한 인증이 필요함 (이름은 권한불가이지만 로그인 등 인증에 관련된 내용이다.) |
403 | Forbidden | 서버가 요청을 이해했지만 승인을 거부 (접근 권한이 불충분한 경우) |
404 | Not Found | 요청 리소스를 서버에서 찾을 수 없음(권한이 부족한 리소스에 접근 시 해당 리소스를 숨기고 싶을 때도 사용함) |
5xx 서버 오류
서버의 문제가 있음을 의미한다. 500번대 오류는 서버 자체의 오류가 생겼을 때만 발생시키도록 설계해야 한다.
코드번호 | 이름 | 설명 |
500 | Internal Server Error | 서버 내부에 오류 발생 |
503 | Service Unavailable | 서버가 일시적 과부하 또는 예정된 작업으로 잠시 서비스가 이용불가한 상태 |
정리
서버에서 클라이언트 요청에 대한 응답(response)로 결과를 보낼 때 상태를 나타내는 코드이다. 몇 번대의 상태코드인지가 가장 중요하고, 해당 문제에 맞는 상태코드를 보내주는 것이 중요하다.
TCP/IP 쉽게, 더 쉽게 + 모두의 네트워크 + 그림으로 배우는 htttp & network basic 책을 읽고, 김영한님 모든 개발자를 위한 HTTP 웹 기본 지식 강의를 듣고 정리한 내용입니다.
'Computer Science > 네트워크' 카테고리의 다른 글
네트워크 시리즈 6. 캐시 관련된 HTTP 헤더 (0) | 2021.01.30 |
---|---|
네트워크 시리즈 5. HTTP 헤더 기본 (0) | 2021.01.29 |
네트워크 시리즈 3. HTTP 기본 & 메소드 (0) | 2021.01.26 |
네트워크 시리즈 2. TCP/IP (0) | 2021.01.24 |
네트워크 시리즈 1. Intro (0) | 2021.01.23 |
- Total
- Today
- Yesterday
- JPA
- 카카오
- 회고
- 네트워크
- python
- 글쓰기미션
- React
- 모의면접준비
- TCP/IP
- javascript
- 우아한테크코스
- CS
- 운영체제
- 우테코수업
- 객체지향
- JS
- 학습로그
- 인증
- Spring
- 월간회고
- TIL
- 알고리즘
- DB
- Transaction
- java
- 개발공부일지
- 코드스쿼드
- 마스터즈코스
- OS
- 내부코드
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |