728x90
반응형
HTTP란?
HyperText Transfer Protocol의 약자로, 서버와 클라이언트 사이에 데이터를 어떻게 주고받을지 미리 정해놓은 규칙(프로토콜, protocol)이다.
클라이언트(웹 브라우저 등)는 사전에 정의된 HTTP에 따라 서버에게 요청을 보내고 서버는 마찬가지로 HTTP에 따라 클라이언트의 요청에 대한 응답을 보낸다. 이때, 서버가 보내는 응답 메시지에는 상태 코드(Status Code)를 포함하는데 이는 100~500번대까지 세자리 숫자로 백의 자릿수에 따라 총 5개의 클래스(분류)로 구분되고, 이는 RFC 9110에 정의되어 있으며 '인터넷 할당 번호 관리기관' IANA(Internet Assigned Numbers Authority)에서 관리가 이루어지고 있다.
1XX: 정보 제공(Informatinoal)
| 요청을 받았으며 프로세스를 계속한다.
2XX: 성공(Success)
| 요청을 성공적으로 받았으며 정상적으로 요청이 수행되었다.
3XX: 리다이렉션(Redirection)
| 요청을 완료하기 위해 추가적인 작업이 필요하다.
4XX: 클라이언트 에러(Client Error)
| 클라이언트가 보낸 요청의 문법이 잘못되었거나 요청을 처리할 수 없다.
5XX: 서버 에러(Server Error)
| 서버에 대한 문제로 클라이언트의 요청을 처리할 수 없다.
1XX - Information responses
: 클라이언트의 요청을 받고 요청 받은 작업을 계속 진행한다
상태 코드 | 의미 | 상세 설명 |
100 Continue | 계속 | 클라이언트는 요청 헤더에 'Expect: 100-continue'를 보내고 서버는 이를 처리할 수 있으면 같은 100 코드로 응답 |
101 Switching Protocols | 프로토콜 전환 | 프로토콜을 HTTP 1.1에서 업그레이드 할 때 Upgrade 응답 헤더에 표시 (현재 HTTP 1.1이 최신이므로 사용 안됨) |
102 Processing | 처리중 | 서버가 처리하는데 오랜 시간이 예상되어 클라이언트에서 타임 아웃이 발생하지 않도록 이 응답 코드를 보냄 |
2XX - Successful responses
: 클라이언트의 요청을 성공적으로 처리하였다
상태 코드 | 의미 | 상세 설명 |
200 OK | 성공 | 서버가 요청을 성공적으로 처리함 |
201 Created | 생성됨 | 요청이 처리되어 새로운 리소스가 생성됨. 응답 헤더 Location에 새로운 리소스의 절대 URI를 기록함 |
202 Accepted | 허용됨 | 요청은 접수하였지만, 처리가 완료되지 않음. 응답 헤더의 Location, Retry-After를 참고하여 클라이언트는 다시 요청을 보냄. |
203 Non-Authoritative Information | 신뢰할 수 없는 정보 | 응답 헤더가 오리지널 서버로부터 제공된 것이 아닌 경우. 프록시 서버가 응답 헤더에 주석을 덧붙인 경우. |
204 No Content | 콘텐츠 없음 | 처리에 성공하였지만, 클라이언트에게 돌려줄 콘텐츠가 없다. 응답에는 헤더만 있고 바디가 없음. |
205 Reset Content | 콘텐츠 재설정 | 요청 처리 성공, 브라우저 화면을 리셋함 |
206 Partial Content | 일부 콘텐츠 | 콘텐츠의 일부만 보냄. |
207 Multi-Status | 다중 상태 | 처리 결과의 상태가 여러개. 대게 성공을 의미하지만 각각의 요청에 대한 처리 결과가 성공인지 바디를 통해 확인 |
3XX - Redirection messages
: 클라이언트는 요청을 마치기 위해 추가 동작을 수행해야 한다
상태 코드 | 의미 | 상세 설명 |
300 Multiple Choices | 여러 선택항목 | 지정한 URI에 대해서 콘텐츠 협상을 수행한 결과 서버에서 콘텐츠를 결정하지 못하고 클라이언트에게 복수 개의 링크를 응답 |
301 Moved Permanently | 영구 이동 | 지정한 리소스가 새로운 URI로 이동하여 이동할 곳의 새로운 URI를 응답 헤더 Location에 기록 |
302 Found | 다른 위치 찾음 | 요청한 URI가 없으므로 클라이언트 메소드를 그대로 유지한 채 응답 헤더 Location에 표시된 다른 URI로 요청을 재송신 해야 함 (302의 의미를 정확하게 개선해서 307을 정의하였으므로 302 사용은 권장하지 않음) |
303 See Other | 다른 위치 보기 | 응답 헤더의 Location에 표시된 URI에서 GET 요청을 통해 요청에 대한 처리 결과를 얻을 수 있음 |
304 Not Modified | 수정되지 않음 | If-Modified-Since와 같은 조건부 GET 요청일때 지정한 리소스가 갱신되지 않았음을 의미 (이 응답은 바디문이 없음) |
305 Use Proxy | 프록시 사용 | 지정한 리소스에 액세스 하기 위해 응답 헤더 Location에 기록된 프록시의 URI를 통해야 함 |
307 Temporary Redirect | 임시 리다이렉션 | 요청한 URI가 없으므로 클라이언트 메소드를 그대로 유지한 채 응답 헤더 Location에 표시된 다른 URI로 요청을 재송신 요청. 클라이언트는 향후 요청 시 원래 위치를 계속 사용해야 함 (302의 의미를 정확하게 재정의한 것) |
4XX - Client error responses
: 클라이언트 요청에 오류가 있다
상태 코드 | 의미 | 상세 설명 |
400 Bad Request | 잘못된 요청 | 클라이언트 요청의 구문이 잘못됨 |
401 Unauthorized | 권한 없음 | 지정한 리소스에 대한 액세스 권한 없음 |
402 Payment Required | 결제 필요 | 지정한 리소스를 액세스 하기 위해 결제가 필요 |
403 Forbidden | 금지됨 | 지정한 리소스에 대한 액세스가 금지됨(401 이외의 사유) |
404 Not Found | 찾을 수 없음 | 지정한 리소스를 찾을 수 없음 |
405 Method Not Allowed | 허용되지 않은 메소드 | 요청한 URI가 지정한 메소드를 지원하지 않아 응답 헤더 Allow에 이 URI가 지원하는 메서드 목록을 기록함 |
406 Not Acceptable | 수용할 수 없음 | 클라이언트가 Accept-* 헤어데 지정한 항목에 관해 처리할 수 없어 서버가 수용 가능한 다른 선택지 리스트를 기록 |
407 Proxy Authentication Required | 프록시 인증 필요 | 클라이언트는 프록시 서버의 응답 헤더 Proxy-Authenticate에 필요한 인증 방식으로 인증이 필요 |
408 Request Timeout | 요청 시간초과 | 요청을 기다리다 서버에서 타임아웃됨 |
409 Conflict | 충돌 | 서버가 요청을 수행하는 중 충돌이 발생 |
410 Gone | 사라짐 | 지정한 리소스가 이전에는 존재하였지만, 현재 존재하지 않음 |
411 Length Required | 길이 필요 | 요청 헤더에 Content-Length를 지정해야 함 |
412 Precondition Failed | 사전 조건 실패 | If-Match와 같은 조건부 요청에서 지정한 사전 조건이 서버와 맞지 않음 |
413 Request Entity Too Large | 너무 큰 요청 객체 | 요청 메세지가 너무 커 서버에서 접속을 끊음 |
414 Request-URI Too Large | 너무 긴 요청 URI | 요청 URI가 너무 긺 |
415 Unsupported Media Type | 지원되지 않는 미디어 타입 | 클라이언트가 지정한 미디어 타입을 서버가 지원하지 않아서 발생 |
416 Range Not Satisfiable | 처리할 수 없는 요청 범위 | 클라이언트가 지정한 리소스의 범위가 서버의 리소스 사이즈와 맞지 않음 |
417 Expectation Failed | 예상 실패 | 클라이언트가 지정한 Expect 헤더를 서버가 이해할 수 없음 |
422 Unprocessable Entity | 처리할 수 없는 엔티티 | 클라이언트가 송신한 XML 구문은 맞지만, 의미상 오류가 있음 |
423 Locked | 잠김 | 지정한 리소스는 잠겨있음 |
424 Failed Dependency | 의존 관계로 실패 | 다른 작업의 실패로 본 요청이 실패됨 |
426 Upgraded Required | 업그레이드 필요 | 응답 Upgrade 헤더 적힌 프로토콜로 클라이언트의 프로토콜 업그레이드 필요 |
428 Precondition Required | 사전 조건 필요 | If-Match와 같은 사전 조건을 지정하는 헤더가 필요하거나, If-Match 헤더가 맞지 않음 |
429 Too Many Requests | 너무 많은 요청 | 클라이언트가 주어진 시간 동안 너무 많은 요청을 보내 응답 Retry-After 헤더에 다음 요청까지 기다릴 시간을 보내 요청의 속도를 제한함. |
431 Request Header Fields Too Large | 너무 큰 헤더 | 헤더의 전체 길이 또는 하나의 헤더가 너무 긴 경우 |
444 Connection Closed Without Response | 응답 없이 연결 닫음 | 악의적인 요청에 대해 응답을 보내지 않고 연결을 종료함 |
451 Unavailable For Legal Reasons | 법적 사유로 불가 | 법적으로 문제가 있는 리소스를 요청한 경우 |
5XX - Server error responses
: 클라이언트의 요청은 유효하나, 서버가 처리에 실패하였다
상태 코드 | 의미 | 상세 설명 |
500 Internal Server Error | 내부 서버 오류 | 서버에 에러가 발생함 |
501 Not Implemented | 구현되지 않음 | 요청한 URI의 메소드에 대해 서버가 구현되지 않음 |
502 Bad GateWay | 불량 게이트웨이 | 게이트웨이 또는 프록시 역할을 하는 서버가 그 뒷단의 서버로부터 잘못된 응답을 받은 경우 |
503 Service Unabailable | 서비스 제공 불가 | 현재 서버에서 서비스를 제공할 수 없는 경우 |
504 Gateway Timeout | 게이트웨이 시간 초과 | 게이트웨이 또는 프록시 역할을 하는 서버가 그 뒷단의 서버로부터 응답을 기다리다 타임아웃이 발생한 경우 |
505 HTTP Version Not Supported | HTTP 버전 미지원 | 클라이언트가 용청에 사용한 HTTP 버전을 서버가 지원하지 않음 |
507 Insufficient Storage | 용량 부족 | 서버에 저장 공간 부족으로 요청을 처리하지 못함 |
728x90
반응형
'프로젝트' 카테고리의 다른 글
[ JAVA Spring boot / 자바 스프링 부트 ] JPA 쿼리 메서드 명명 규칙 (5) | 2024.10.09 |
---|