HTTP Status Code/HTTP 상태 코드

Jisoo Choi·2021년 11월 1일
0

Web

목록 보기
2/2
post-thumbnail

☑️ HTTP Status Code란?

  • 클라이언트가 서버에게 요청(request)를 보내면 서버는 응답(response)를 보낸다.
    그에 대한 응답은 크게 5개의 응답 코드로 나누어진다.

    1. 정보를 제공하는 응답 (Informational response)
    2. 성공적인 응답 (Success)
    3. redirect
    4. 클라이언트 에러 (Client error response)
    5. 서버 에러 (Server errors)

다섯가지 status code의 첫 번째 숫자에 따라 response class가 달라지고, 에러마다 정의된 코드와 의미를 가지고 있다.

1XX - Informational response

  • 서버가 요청을 받았으며 프로세스를 계속하라는 의미
1XXcode_nmdefinition
100Continue(진행중) 요청이 받아들여졌으며 현재까지의 진행 상태에 문제가 없고 클라이언트가 계속 이어서 요청을 하거나 이미 요청을 완료한 경우에는 무시해도 되는 것을 의미
101Switching Protocol클라이언트가 보낸 요청 헤더의 Update 필드 중 하나로 서버가 프로토콜을 변경
102Processing서버가 요청을 수신하였으며 이를 처리 중이지만, 아직 제대로 된 응답을 주지 못하는 상황

2XX - Success

  • 요청을 성공적으로 받을 시
2XXcode_nmdefinition
200OK서버가 요청을 성공적으로 처리했을 시
201Created요청이 성공적이었으며 새로운 리소스가 생성되었을때, 일반적으로 POST, 혹은 PUT 이후에 받게 된다.
202Accepted서버가 요청을 접수했지만 아직 처리하지는 못했을 때
203Non-Authoritative Information요청을 성공적으로 처리했지만 다른 소스에서 수신된 정보를 제공, 검증이 되지 않은 상태
204No Content서버가 요청을 성공적으로 처리했지만 콘텐츠가 없을 때
205Reset Content요청을 완수한 이후에 이 요청을 보낸 문서 뷰를 리셋하라는 의미 (ex. 새로고침 etc.)
206Partial Content서버가 GET 요청의 일부만 성공적으로 처리 (Content-Range와 Date 헤더를 반드시 포함)
207Multi Status여러 개의 리소스가 여러 status code를 갖고 있는 상황에서 적절한 정보 전달
208Already ReportedDAV*에서 사용 (WebDAV: 하이퍼텍스트 전송 프로토콜의 확장)

3XX - Redirection message

  • 클라이언트의 request를 마치기 전에 추가 동작을 해야 할 경우(요청에 대해 적절한 위치를 제공하거나 대안의 응답을 제공)
3XXcode_nmdefinition
300Multiple Choice클라이언트가 동시에 여러 응답이 가능한 요청을 보냈을 경우 클라이언트의 선택지를 반환
301Moved Permanently요청한 리소스의 URI가 변경 -> 변경된 URI에 대한 정보와 함께 응답
302Found요청한 리소스의 URI가 일시적으로 변경된 것이므로 원래 요청했던 URI로 요청해야 함
303See Other클라이언트가 요청한 작업을 하기 위해서는 다른 URI에서 얻어야 할 때 클라이언트에게 줌
304Not Modified이전의 요청과 비교하여 달라진 것이 없음 (캐시를 목적으로 사용됨)
305Use Proxyproxy를 통해 요청
306Unused지금은 사용하지 않는 코드 -> 추후 사용을 위해 예약되어 있음
307Temporary Redirect302와 동일하나 클라이언트가 보낸 HTTP 메소드도 변경하면 안됨
308Permanent Redirect요청한 리소스가 영구적으로 다른 URI에 위치하고 있음, 301과 동일하나 HTTP 메소드도 변경하지 말 것

4XX - Client error response

  • 클라이언트의 request에 에러가 있음
    (400번대는 status code가 꽤 많기 때문에 자주 볼 수 있는 코드에 대해 정리하겠다.)
4XXcode_nmdefinition
400Bad Request잘못된 문법으로 요청을 보내고 있어 서버가 이해할 수 없음
401Unauthorized요청을 위해 권한 인증이 필요함 (ex. 토큰이 없음) 보통 서버는 로그인이 필요한 페이지에 대해 이 요청을 제공할 수 있다.
402Payment Required서버가 요청을 접수했지만 아직 처리하지는 못했을 때
403Forbidden서버가 요청을 거부할 때, 클라이언트가 요청한 컨텐츠에 대해 접근할 권한이 없음
404Not Found서버가 요청한 URI를 찾을 수 없음, 서버에 존재하지 않는 페이지에 대한 요구를 할 때
405Method Not Allowed클라이언트가 보낸 메소드가 해당 URI에서 지원하지 않음 (ex. POST 방식으로만 request가 가능한데 이를 지키지 않고 GET으로 보냈을 때)
409Conflict서버가 요청을 수행하는 중에 충돌이 발생했을 때
414URI Too Long요청하는 URL(일반적으로는 URL)이 너무 길었을 때
429Too Many Requests사용자가 일정 시간 동안 너무 많은 request를 보냈을 때

5XX - Server errors

  • 서버 오류로 인해 requet를 수행할 수 없음
5XXcode_nmdefinition
500Internal Server Error서버에 오류가 발생하여 요청을 수행할 수 없을 경우
501Not Implemented서버가 지원하지 않는 새로운 메소드를 사용하여 요청, 서버에 해당 요청을 수행할 수 있는 기능이 없는 경우
502Bad Gateway서버가 proxy나 gateway 등 업스트림 서버에서 잘못된 응답을 받았을 경우
503Service Unavailable현재 서버가 일시적으로 사용이 불가 (일반적으로 유지보수로 인해 중단되거나 과부하가 걸린 서버)
504Gateway Timeout서버가 다른 서버로 요청을 보냈으나 delay가 발생하여 처리가 불가능
505HTTP Version Not Supported서버가 지원하지 않거나 적절하지 않은 프로토콜로 요청
506Variant Also Negotiates서버 내부 구성 오류가 있음
507Insufficient Storage서버 내부 구성 오류가 있음
508Loop Detected요청을 처리하는 동안 무한 루프를 감지
510Not Extended서버가 처리하기 위해서는 요청을 더 확장해야 함
511Network Authentication Required클라이언트가 네트워크 액세스를 얻으려면 인증이 필요

이런 Status Code들로 서버와의 통신 중 어떤 문제점이 발생했는지 알 수 있고, 해결할 수 있다. 자주 발생하는 Status Code들은 기억해 두는 것이 좋겠다🎃



Reference

profile
👩‍🚀 No worries! Just record

0개의 댓글