스터디
HTTP 상태 코드 본문
< HTTP 상태 코드 >
클라이언트가 보낸 HTTP 요청에 대한 서버의 응답 코드로, 상태 코드에 따라 요청의 성공/실패 여부를 판단한다.
> HTTP 상태 코드 분류
- 1xx (Informational): 조건부 응답
- 2xx (Successful): 성공
- 3xx (Redirection): 리다이렉션 완료
- 4xx (Client Error): 요청 오류
- 5xx (Server Error): 서버 오류
> 1xx (Informational): 조건부 응답
요청이 수신되어 처리 중을 의미한다. (이 상태 코드를 만날 일은 거의 없다고 한다.)
상태 코드 | 설명 |
100 | Continue (클라이언트가 서버로 보낸 요청에 문제가 없으니 다음 요청을 이어서 보내도 된다는 것을 의미한다.) |
> 2xx (Successful): 성공
요청을 정상적으로 처리했음을 의미한다.
상태 코드 | 설명 |
200 | OK (요청이 성공적으로 수행되었음을 의미한다.) |
201 | Created (요청이 성공적으로 수행되었으며, 그 결과로 새로운 리소스가 생성됨을 의미한다.) |
202 | Accepted (요청은 접수되었지만 처리는 완료되지 않음을 의미한다.) |
203 | Non-Authoritative Information (요청이 성공적으로 수행되었으나 요청에 대한 검증이 되지 않음을 의미한다.) |
204 | No Content (요청이 성공적으로 수행되었고 응답 payload에 보낼 데이터가 없음을 의미한다.) |
205 | Reset Content (서버가 요청을 성공적으로 처리했지만 콘텐츠를 표시하지 않는다. 클라이언트가 콘텐츠를 재설정할 것을 요구한다.) |
206 | Partial Content (서버가 GET 요청의 일부만 성공적으로 처리했음을 의미한다.) |
> 3xx (Redirection): 리다이렉션 완료
요청 완료를 위해 추가 작업 조치가 필요함을 의미한다.
주로 리다이렉트를 할 때 많이 사용된다.
해당 응답을 받으면 브라우저는 HTTP 헤더에 들어있는 Location 필드를 찾아 해당 필드가 존재할 경우 Location 필드에 담긴 URL로 자동으로 리다이렉트한다.
상태 코드 | 설명 |
300 | Multiple Choices (요청에 대해 하나 이상의 리소스가 존재함을 의미한다.) |
301 | Moved Permanently (요청한 리소스의 URI가 변경되었음을 의미한다.) |
302 | Found (요청한 리소스의 URI가 일시적으로 변경되었음을 의미한다.) |
303 | See Other (요청한 리소스를 다른 URI에서 GET 요청을 통해 얻어야 할 때의 응답이다.) |
304 | Not Modified (리소스가 수정되지 않았음을 의미한다.) |
307 | Temporary Redirect (302와 유사하며, 클라이언트는 HTTP 메소드를 유지한 채 요청을 재송신할 필요가 있음을 의미한다.) |
308 | Permanent Redirect (301과 유사하며, 클라이언트는 HTTP 메소드를 유지한 채 요청을 재송신할 필요가 있음을 의미한다.) |
리다이렉션 종류
- 영구적인 리다이렉션 (301, 308)
- 301은 리다이렉트시킬 때 HTTP 메소드를 GET으로 바꾸고 Body 없이 전송한다.
- 308은 전송받은 HTTP 메소드를 유지하고 Body도 유지하여 전송한다.
- 일시적인 리다이렉션 (302, 307, 303)
- 302는 리다이렉트시킬 때, HTTP 메소드를 GET으로 바꾸고 Body 없이 전송한다.
- 307은 전송받은 HTTP 메소드를 유지하고 Body도 유지하여 전송한다.
- 303은 리다이렉트시킬 때 HTTP 메소드를 무조건 GET으로 바꾼다. (302가 애매모호해서 303으로 명확하게 정의되었다고 한다.)
- 일시적인 리다이렉션(302, 303)을 사용하면 POST->GET 요청으로 변경하여 페이지 새로고침 등의 동작으로 POST 요청 중복 처리 되는 것을 방지할 수 있다.
- 특수 리다이렉션 (304)
- 캐싱된 리소스를 사용한다.
> 4xx (Client Error): 요청 오류
클라이언트 오류(잘못된 문법 등)로 인해 서버가 요청을 처리할 수 없음을 의미한다.
상태 코드 | 설명 |
400 | Bad Request (잘못된 문법 등으로 인해 클라이언트가 올바르지 못한 요청을 보내 서버가 요청을 이해할 수 없음을 의미한다.) |
401 | Unauthorized (인증되지 않은 사용자가 인증이 필요한 리소스를 요청하는 경우의 응답이다. 보통 로그인이 필요한 API를 비로그인 사용자가 호출했을 때 사용된다.) |
403 | Forbidden (클라이언트가 콘텐츠에 접근할 권한을 가지고 있지 않음을 의미한다. 401과 다른ㄹ 점은 서버가 클라이언트가 누구인지 알고 있다는 것이다. 보통 특정 IP나 국가가 차단되어있는 사이트에 접속을 시도한 경우 사용된다.) |
404 | Not Found (요청한 리소스가 존재하지 않음을 의미한다. 인증되지 않은 클라이언트로부터 리소스를 숨기기 위해 403 대신 이 응답을 전송하기도 한다.) |
405 | Method Not Allowed (현재 리소스에 맞지 않는 메소드를 사용했음을 의미한다.) |
406 | No Acceptable (알맞은 콘텐츠 타입이 없음을 의미한다. 서버의 리소스가 클라이언트의 HTTP 헤더에 들어있는 Accept 필드에 명시된 콘텐츠 타입이 아닌 경우의 응답이다.) |
408 | Request Timeout (요청에 응답하는 시간이 너무 오래 걸림을 의미한다.) |
409 | Conflict (요청이 현재 서버의 상태와 충돌될 때의 응답이다.) |
412 | Precondition Failed (서버가 요청자가 요청 시 부과한 사전 조건을 만족하지 않을 때의 응답이다.) |
413 | Payload Too Large (요청이 너무 커서 서버가 처리할 수 없을 때의 응답이다.) |
429 | Too many Requests (클라이언트가 지정된 시간에 너무 많은 요청을 보낸 경우의 응답이다.) |
> 5xx (Server Error): 서버 오류
서버 오류로 인해 서버가 정상 요청을 처리하지 못함을 의미한다.
상태 코드 | 설명 |
500 | Internal Server Error (서버에 오류가 발생하여 응답할 수 없음을 의미한다. 서버에 오류가 발생했으나 처리 방법을 알 수 없을 경우의 응답이다.) |
501 | Not Implemented (클라이언트 요청에 대한 서버의 응답 수행 기능이 없음을 의미한다. |
502 | Bad Gateway (서버가 게이트웨이로부터 잘못된 응답을 수신했음을 의미한다. 서버의 부모 서버에서 오류가 발생한 경우의 응답이다. 보통 서버에 접속하는 사용자가 많아 과부화될 때 발생한다.) |
503 | Service Unavailable (서버가 요청을 처리할 준비가 되지 않음을 의미한다. 일반적으로 유지보수를 위해 작동이 중단되거나 과부하가 걸린 경우의 응답이다.) |
504 | Gateway Timeout (서버가 게이트웨이 역할을 하고 있으며, 한 서버가 액세스하고 있는 다른 서버에서 적시에 응답을 받지 못했음을 의미한다.) |
https://developer.mozilla.org/ko/docs/Web/HTTP/Status
HTTP 상태 코드 - HTTP | MDN
HTTP 응답 상태 코드는 특정 HTTP 요청이 성공적으로 완료되었는지 알려줍니다. 응답은 5개의 그룹으로 나누어집니다: 정보를 제공하는 응답, 성공적인 응답, 리다이렉트, 클라이언트 에러, 그리고
developer.mozilla.org
'백엔드' 카테고리의 다른 글
[JavaScript] async/await (0) | 2023.04.06 |
---|---|
JavaScript promise (1) | 2023.04.06 |
HTTP Method (0) | 2023.04.06 |
객체와 인스턴스 차이 (0) | 2023.04.05 |
객체지향 5원칙(SOLID) (2) | 2023.04.04 |