-
[Network] HTTP 상태(응답)코드, Error Code(에러 코드)Web/Network 2022. 9. 15. 19:46
- 개요
- HTTP 상태(응답) 코드란?
- HTTP 상태(응답) 코드 분류
- HTTP 상태(응답) 코드 상세 내용
* 개요
개발을 하다 보면, 상태 코드를 수도 없이 만나 볼 수 있을 것이다.
상태 코드를 미리 알아둔다면 해당 상태 코드에 대한 유연한 대처가 가능할 것이란 생각이 들어
작성자도 공부해볼겸, 작성하게 되었다.
* HTTP 상태(응답) 코드란?
HTTP 상태(응답) 코드는 클라이언트가 보낸 HTTP 요청에 대한 서버의 응답 코드를 말한다.
이는 특정 HTTP 요청이 성공적으로 완료 되었는지, 아닌지를 알려준다.
* HTTP 상태(응답) 코드 분류
상태 코드는 첫 번째 자리 숫자에 따라 크게 5가지로 분류 가능하다.
- 1xx - Informational (정보) : 요청을 받았으며, 프로세스를 계속한다.
- 2xx - Success (성공) : 요청을 성공적으로 받았고, 정상적으로 처리한다.
- 3xx - Redirection (리다이렉션) : 요청을 완료하기 위해 추가 조치가 필요하다.
- 4xx - Client Error (클라이언트 오류) : 요청의 문법이 잘못되었거나 요청을 처리할 수 없다.
- 5xx - Server Error (서버 오류) : 서버가 정상 요청을 처리하지 못했다.
* HTTP 상태(응답) 코드 상세 내용
1xx : Information responses (조건부 응답)
=> 요청을 받았으며, 작업을 계속함을 의미한다.
- 100 - Continue : 클라이언트가 서버로 보낸 요청에 문제가 없으니 다음 요청을 이어서 보내도 된다.
2xx : Successful responses (성공 응답)
=> 요청을 성공적으로 받았으며, 인식했고, 수용함을 의미한다.
- 200 - OK : 요청이 성공적으로 수행됐음을 의미한다. 주로 GET 요청에 대한 응답이다.
- 201 - Created : 요청이 성공적으로 수행되었으며, 결과로 새로운 리소스가 생성됨을 의미한다. 주로 POST 요청에 대한 응답이다.
- 202 - Accepted : 요청은 접수되었지만 처리는 완료하지 않음을 의미한다.
- 203 - Non-Authoritative Information : 요청이 성공적으로 수행되었지만 검증이 되지 않음을 의미한다.
- 204 - No Content : 요청이 성공적으로 수행되었고, 응답 payload에 보낼 데이터가 없음을 의미한다. 주로 삭제 요청에 대한 응답으로 사용된다.
- 205 - Reset Content : 서버가 요청을 성공적으로 처리했지만 콘텐츠를 표시하지 않는다. 즉, 클라이언트가 콘텐츠를 재설정 할 것을 요구한다.
- 206 - Partial Conent : 서버가 GET 요청의 일부만 성공적으로 처리했음을 의미한다.
- 207 - Multi-Status : 여러 리소스가 여러 상태 코드인 상황이 적절한 경우에 정보를 전달함을 의미한다.
- 226 - IM Used : 서버가 GET 요청에 대한 리소스의 의무를 다 했고, 응답이 하나 또는 그 이상이 현재 인스턴스에 적용되었다는 것을 알려준다.
3xx : Redirection messages (리다이렉션 완료)
=> 요청 완료를 위해 추가 작업 조치가 필요함을 의미한다.
- 300 - Multiple Choices : 요청에 대해 하나 이상의 리소스가 존재함을 의미한다.
- 301 - Moved Permanently : 요청한 리소스의 URL이 변경되었음을 의미한다.
- 302 - Found : 요청한 리소스의 URL이 일시적으로 변경되었음을 의미한다.
- 303 - See Other : 요청한 리소스를 다른 URL에서 GET 요청을 통해 얻어야 할 때의 응답을 의미한다.
- 304 - Not Modified : 수정되지 않음을 의미한다. 해당 응답을 받으면 클라이언트는 서버로부터 리소스를 재전송 받는 것이 아닌, 캐싱된 리소스를 사용하게 된다.
- 307 - Temporary Redirect : 302의 내용 + 사용자 에이전트는 반드시 HTTP를 변경하면 안됨을 의미한다.
- 308 - Permanent Redirect : 301의 내용 + 사용자 에이전트는 반드시 HTTP를 변경하면 안됨을 의미한다.
4xx : Client error responses (요청 오류)
=> 요청의 문법이 잘못되었거나 요청을 처리할 수 없음을 의미한다.
- 400 - Bad Request : 잘못된 문법으로 인해 클라이언트의 요청을 서버가 이해할 수 없음을 의미한다.
- 401 - Unauthorized : 인증되지 않은 사용자가 인증이 필요한 리소스를 요청하는 경우의 응답을 의미한다.
- 403 - Forbidden : 클라이언트가 콘텐츠에 접근할 권한을 가지고 있지 않음을 의미한다. 401과 다른 점은, 서버가 클라이언트가 누구인지 알고 있다는 점만 다르다.
- 404 - Not Found : 요청한 리소스가 존재하지 않음을 의미한다.
- 405 - Method Not Allowed : 현재 리소스에 맞지 않는 메소드를 사용했음을 의미한다.
- 406 - No Acceptable : 서버와 사용자 에이전트끼리의 알맞은 컨텐츠 타입이 없음을 의미한다.
- 408 - Request Timeout : 요청에 응답하는 시간이 너무 오래 걸림을 의미한다.
- 409 - Conflict : 요청이 현재 서버의 상태와 충돌될 때의 응답을 의미한다.
- 412 - Precondition Failed : 서버가 요청자의 요청 시 사전조건을 만족시키지 않을 때의 응답을 의미한다.
- 413 - Payload Too Large : 요청이 너무 커서 서버가 처리할 수 없음을 의미한다.
- 429 - Too many Requests : 요청자가 지정된 시간에 너무 많은 요청을 보냈을 때의 응답을 의미한다.
- 451 - Unavailable For Legal Reasons : 사용자가 요청한 것은 불법적인 리소스임을 의미한다.
5xx : Server error responses (서버 오류)
=> 서버가 정상 요청에 대해 처리하지 못했음을 의미한다.
- 500 - Internal Server Error : 서버에 오류가 발생하여 응답할 수 없음을 의미한다.
- 501 - Not Implemented : 클라이언트 요청에 대한 서버의 응답 수행 기능이 없음을 의미한다.
- 502 - Bad Gateway : 서버가 게이트웨이로부터 잘못된 응답을 수신했음을 의미한다. 보통 서버가 과부화 할 때 많이 일어난다.
- 503 - Service Unavailable : 서버가 요청을 처리할 준비가 되지 않았음을 의미한다. 보통 유지보수나 과부화가 걸린 경우 많이 일어난다.
- 504 - Gateway Timeout : 서버가 게이트웨이 역할을 하고 있으며, 한 서버가 액세스하고 있는 다른 서버에 응답을 받지 못함을 의미한다.
- 508 - Loop Detected : 서버가 요청을 처리하는 동안 무한 루프가 발생했을 때의 응답을 의미한다.
- 510 - Not Extended : 서버가 요청을 처리할 때 요청에 대한 추가 확장이 필요할 때의 응답을 의미한다.
참고 자료 : https://namu.wiki/w/HTTP/%EC%9D%91%EB%8B%B5%20%EC%BD%94%EB%93%9C
이미지 출처 : http://blog.plura.io/wp-content/uploads/2021/06/blog_banner20210614_1.png