HTTP 상태 코드
- 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능
- 클라이언트가 인식할 수 없는 상태 코드를 서버가 반환하면, 상위 상태 코드로 해석해서 처리한다.
- ex) 299 -> 2xx, 451 -> 4xx
- 종류
- 1xx(information) : 서버가 요청을 클라이언트에서 성공적으로 수신을 했고, 처리 중인 정보를 보낸다.
- 2xx(Successful) : 서버가 요청을 정상 처리했음을 알린다.
- 3xx(Redirection) : 요청을 완료하려면 추가 행동이 필요하다.
- 4xx(Client Error) : 클라이언트 오류, 잘못된 문법 등으로 서버가 요청을 수행할 수 없다.
- 5xx(Server Error) : 서버 오류, 서버가 클라이언트의 요청을 처리하지 못했다.
1xx(information)
- 거의 사용하지 않는다.
2xx(Successful)
code | reason phrase | 설명 |
200 | OK | 성공 |
201 | Created | 요청을 처리해서 새로운 리소스가 생성됨 |
202 | Accepted | 요청이 접수되었으나, 처리가 완료되지 않음 |
204 | No Content | 서버가 요청을 성공적으로 수행했지만, 응답 페이로드 본문에 보낼 데이터가 없음 |
3xx(Redirection)
- 웹 브라우저는 3xx 응답의 결과에 Location 헤더가 있으면, location 위치로 자동 이동한다.(리다이렉트)
code | reason phrase | 설명 |
300 | Multiple Choices | 요청에 대해서 하나 이상의 응답이 가능하며, 클라이언트는 그 중에 하나를 반드시 선택해야 한다. |
301 | Moved Permanently | 리다이렉트 시 요청 메서드가 GET으로 변하고, 본문이 제거될 수 있음(MAY) |
302 | Found | 리다이렉트 시 요청 메서드가 GET으로 변하고, 본문이 제거될 수 있음(MAY) |
303 | See Other | 리다이렉트 시 요청 메서드가 GET으로 변경 |
304 | Not Modified | 클라이언트에게 리소스가 수정되지 않았음을 알려준다. 따라서 클라이언트는 로컬 PC에 저장된 캐시를 재사용한다. |
307 | Temporary Redirect | 리다이렉스 시 요청 메서드와 본문 유지(요청 메서드를 변경하면 안된다. MUST NOT) |
308 | Permanent Redirect | 리다이렉스 시 요청 메서드와 본문 유지(처음 POST 요청 시 리다이렉트도 POST 유지) |
종류
- 영구 리다이렉션
- 리소스의 URI가 영구적으로 이동
- 원래의 URL을 사용하지 않기 때문에 검색 엔진 등에서 변경을 인지할 수 있다.
- 301, 308
- 일시 리다이렉션 : 일시적인 변경
- 리소스의 URI가 일시적으로 변경
- PRG 시 사용
- 302, 307, 303
- 307, 303을 권장하지만, 302가 이미 상용화되었다.
- 특수 리다이렉션
- 클라이언트에게 리소스가 수정되지 않았음을 알려준다. 따라서 캐시를 재사용한다.
- 응답 시 메시지 바디를 포함하면 안된다.(로컬 캐시를 사용하기 때문)
- 조건부 GET, HEAD 요청 시 사용
- 304
PRG
- Post / Redirect / Get
- Post 요청 후 새로 고침으로 인한 중복 처리를 방지하기 위해 GET 메서드로 리다이렉트를 한다.
- 새로고침 해도 결과 화면을 GET으로 조회
4xx(Client Error)
- 오류의 원인이 클라이언트에게 있기 때문에 똑같은 재시도를 하더라도 실패한다.
code | reason phrase | 설명 |
400 | Bad Request | 클라이언트가 잘못된 요청을 해서 서버가 요청을 처리할 수 없음. 요청 파라미터, API 스펙 미일치 등 |
401 | Unauthorized | 클라이언트가 해당 리소스에 대한 인증이 필요함 |
403 | Forbidden | 서버가 요청을 이해했지만, 승인을 거부함 |
404 | Not Found | 요청 리소스를 찾을 수 없음. 권한이 부족한 리소스에 접근할 때 해당 리소스를 숨기는 용도로도 사용 |
5xx(Server Error)
code | reason phrase | 설명 |
500 | Internal Server Error | 서버 문제로 오류 발생. 애매하면 500 오류 |
503 | Service Unavailable | 일시적인 과부하, 예정된 작업 등으로 인한 서비스 이용 불가 |
'개발 도서 및 강의 > 모든 개발자를 위한 HTTP 웹 기본 지식' 카테고리의 다른 글
8. HTTP 헤더 - 캐시와 조건부 요청 (0) | 2023.04.09 |
---|---|
7. HTTP - 일반 헤더 (0) | 2023.04.09 |
5. HTTP 메서드 활용 (0) | 2023.04.02 |
3. HTTP 기본 (0) | 2023.04.02 |
4. HTTP 메서드 (0) | 2023.03.29 |