[Etc.]그건 아마도 다 니 잘못일거야 HTTP 상태 코드 정리

김피자·2023년 4월 10일
0

etc.

목록 보기
5/10


협업시 니 잘못(프론트) 내 잘못(백)을 쉽게 파악하기 위해 HTTP 상태코드를 정리하고자 한다.

HTTP는 서버와 클라이언트 사이에 데이터를 주고받기 위해 사용하는 통신방식이다.

예를 들어 웹 브라우저 주소창에 https://www.naver.com을 입력하고 엔터를 누르면

  1. 웹 클라이언트와 웹 서버 사이에 HTTP 연결이 맺어지고 웹 클라이언트는 웹 서버에 HTTP 요청 메세지를 보낸다.

  2. 웹 서버는 요청에 따른 처리를 진행한 후 그 결과를 웹 클라이언트에 HTTP 응답 메세지로 보낸다.

이렇게 우리는 요청 메세지와 응답 메세지를 주고 받으며 웹을 사용하는 것이다!

서버에서의 처리 결과는 응답 메시지의 상태 라인에 있는 상태 코드(Status Code)를 보고 파악할 수 있다.

100-500번 대의 상태 코드들에 대해 알아보자.


  • 1XX Informational (정보제공)
    : 임시 응답
    : 현재 클라이언트의 요청까지는 처리되었으니 계속 진행하라는 의미
  • 2XX Success (성공)
    : 클라이언트의 요청이 서버에서 성공적으로 처리되었다는 의미
  • 3XX Redirection (리다이렉션)
    : 완전한 처리를 위해 추가 동작이 필요한 경우
    : 주로 서버의 주소 또는 요청 URI의 웹 문서가 이동됐으니 그 주소로 다시 시도하라는 의미

  • 4XX Client Error (클라이언트 에러)
    : 없는 페이지를 요청하는 등 클라이언트의 요청 메시지 내용이 잘못된 경우

  • 5XX Server Error (서버 에러)
    : 서버에서 메세지 처리에 문제가 발생한 경우
    : 서버의 부하, DB 처리 오류, 서버에서 익셉션이 발생한 경우

⚠️ 1XX

상태 코드상태 텍스트서버 측 의미
1XXInformational정보 제공클라이언트 요청을 받았고 작업을 계속 진행하고 있음
100Continue계속계속 진행 : 클라이언트는 요청 헤더에 'Expect: 100-continue'를 보내고 서버는 이를 처리할 수 있으면 이 코드로 응답
101Switching Protocols프로토콜 전환프로토콜 전환해라
102Processing처리 중처리 중 : 서버가 처리하는데 많은 시간이 예상되어 클라이언트에서 타임 아웃이 발생하지 않도록 이 응답 코드를 보냄
103 ~ 199Unassigned현재 할당되지 않은 상태 코드

⚠️ 2XX

상태 코드상태 텍스트서버 측 의미
2XXSuccess성공클라이언트가 요청한 동작을 수신하여 성공적으로 처리했음
200OK성공서버가 요청을 성공적으로 처리했음
201Created생성됨요청이 처리되어 새로운 리소스 생성됨
202Accepted허용됨요청은 접수했지만, 처리 완료 안됨
203Non-Authoritative신뢰할 수 없는 정보응답 헤어가 오리지널 서버로부터 제공된 것이 아님
204No Content콘텐츠 없음처리를 성공했지만 클라이언트에게 돌려줄 콘텐츠 없음 : Delete 요청에 대한 응답에 많이 사용
205Reset Content콘텐츠 재설정처리를 성공했고 브라우저 화면 리셋해라
206Partial Content일부 콘텐츠콘텐츠의 일부만을 보냄
207Multi-Status다중 상태처리 결과의 스테이터스가 여러 개 : 응답은 성공했지만 각각 처리 결과가 성공인지는 바디를 봐야 알 수 있음
208 ~ 299Unassigned현재 할당되지 않은 상태 코드

⚠️ 3XX

상태 코드상태 텍스트서버 측 의미
3XXRedirection리다이렉션클라이언트는 요청을 마치기 위해 추가 동작을 해야함
300Multiple Choices여러 선택항목선택 항목이 여러개 있음 : 지정 URI에 대해 콘텐츠 협상을 수행한 결과, 서버에서 콘텐츠를 결정하지 못하고 클라이언트에게 복수 개의 링크를 응답할 때 사용
301Moved Permanently영구 이동지정한 리소스가 새로운 URI로 이동 : 이동할 곳의 새로운 URI는 응답 헤더 Location에 기록
302Found다른 위치 찾음요청한 리소스를 다른 URI에서 찾음
303See Other다른 위치 보기다른 위치로 요청해라 : 브라우저의 폼 요청을 POST로 처리하고 결과 화면으로 리다이렉트 시킬 때 자주 사용하는 응답 코드
304Not Modified수정되지 않음마지막 요청 이후 요청한 페이지는 수정되지 않았음 : 조건부 GET 요청일 때 지정한 리소스가 갱신되지 않았음을 알려 줌
305Use Proxy프록시 사용지정한 리소스에 엑세스하려면 프록시를 통해야함 : 응답 헤어 Location에 프록시의 URI를 기록
306(Unused)예전에 사용하다 현재는 사용하지 않는 상태코드
307Temporary Redirect임시 리다이렉션임시로 리다이렉션 요청이 필요함 : 요청한 URI가 없어 클라이언트 메소드를 그대로 유지한 채 응답 헤더 Location에 표시된 다른 URI로 요청을 재송신할 필요가 있음
308~
399
Unassigned현재 할당되지 않은 상태 코드

⚠️ 4XX

상태 코드상태 텍스트서버 측 의미
4XXClient Error클라이언트 에러클라이언트의 요청에 오류
400Bad Request잘못된 요청요청의 구문이 잘못됐음
401Unauthorized권한 없음지정한 리소스에 대한 엑세스 권한이 없음
402Payment Required결제 필요지정한 리소스를 엑세스하기 위해서는 결제가 필요하다.
403Forbidden금지됨지정한 리소스에 대한 엑세스 금지됨 : 401 인증 처리 이외의 사유로 리소스에 대한 액세스가 금지되었음을 의미
404Not Found찾을 수 없음지정한 리소스 찾을 수 없음
405Method Not Allowed허용되지 않은 메소드요청한 URI가 지정한 메소드를 지원하지 않음
406Not Acceptable수용할 수 없음클라이언트가 Accept-* 헤더에 지정한 항목에 관해 처리할 수 없음
407Proxy Authentication Required프록시 인증 필요클라이언트는 프록시 서버에 인증이 필요함
408Request Timeout요청 시간 초과요청을 기다리다 서버에서 타임아웃 함
409Conflict충돌서버가 요청을 수행하는 중에 충돌이 발생
410Gone사라짐지정한 리소스가 이전에는 존재했지만, 현재는 존재하지 않음 :
ex) 기간 한정된 프로모션 사이트가 사라진 경우 사용할 수 있는 응답 코드
411Length Required길이 필요요청 헤더에 Content-Length를 지정해야함
412Precondition Failed사전 조건 실패If-Match와 같은 조건부 요청에서 지정한 사전 조건이 서버와 맞지 않음
413Request Entity Too Large요청 객체가 너무 큼요청 메세지가 너무 큼 : 서버는 접속을 끊음
414Request-URI Too Large요청 URI가 너무 김요청 URI가 너무 김
415Unsupported Media Type지원하지 않는 미디어 유형클라이언트가 지정한 미디어 타입을 서버가 지원하지 않음
416Range Not Satisfiable처리할 수 없는 요청 범위클라이언트가 지정한 리소스의 범위가 서버의 리소스 사이즈와 맞지 않음
417Expectation Failed예상 실패클라이언트가 지정한 Expect 헤더를 서버가 이해할 수 없음
418 ~ 421Unassigned현재 할당되지 않은 상태 코드
422Unprocessable Entity처리할 수 없는 엔티티클라이언트가 송신한 XML이 구문은 맞지만, 의미상 오류 있음
423Locked잠김지정한 리소스는 잠겨있음
424Failed Dependency의존 관계로 실패다른 작업의 실패로 인해 본 요청도 실패
426Upgraded Required업그레이드 필요함클라이언트의 프로토콜의 업그레이드 필요
428Precondition Required사전 조건 필요If-Match와 같은 사전조건을 지정하는 헤더가 필요
429Too Many Requests너무 많은 요청클라이언트가 주어진 시간 동안 너무 많은 요청을 보냄 : 요청의 속도를 제한할 때 사용
431Request Header Fields Too Large너무 큰 헤더헤더의 길이가 너무 큼
444Connection Closed Without Response응답 없이
연결 닫음응답을 보내지 않고 연결을 종료
451Unavailable For Legal Reasons법적 사유로 불가법적으로 문제가 있는 리소스를 요청함
452
~ 499
Unassigned현재 할당되지 않은 상태 코드

⚠️ 5XX

상태 코드상태 텍스트서버 측 의미
5XXServer Error서버 에러클라이언트의 요청은 유효한데 서버가 처리에 실패
500Internal Server Error내부 서버 오류서버 에러 발생
501Not Implemented구현되지 않음요청한 URI의 메소드에 대해 서버가 구현하고 있지 않음
502Bad Gateway불량 게이트웨이게이트웨이 또는 프록시 역할을 하는 서버가 그 뒷단의 서버로부터 잘못된 응답을 받음
503Service Unavailable서비스 제공불가현재 서버에서 서비스를 제공할 수 없음 : 보통은 서버 과부하나 서비스 점검 등 일시적인 상태
504Gateway Timeout게이트웨이 시간초과게이트웨이 또는 프록시 역할을 하는 서버가 그 뒷단의 서버로부터 응답을 기다리다 타임아웃이 발생
505HTTP Version Not SupportedHTTP 버전 미지원클라이언트가 요청에 사용한 HTTP 버전을 서버가 지원하지 않음
506Unassigned현재 할당되지 않은 상태 코드
507Insufficient Storage용량 부족서버에 저장 공간 부족으로 처리에 실패
512
~ 599
Unassigned현재 할당되지 않은 상태 코드

출처
https://hongong.hanbit.co.kr/http-%ec%83%81%ed%83%9c-%ec%bd%94%eb%93%9c-%ed%91%9c-1xx-5xx-%ec%a0%84%ec%b2%b4-%ec%9a%94%ec%95%bd-%ec%a0%95%eb%a6%ac/

profile
제로부터시작하는코딩생활

0개의 댓글