본문 바로가기

기초 공부/웹

[WEB] HTTP Method 및 HTTP Status Code

1.HTTP Method 란?

 클라이언트 ↔ 서버 간 통신을 위해서 HTTP를 이용한다. 이 때 클라이언트에서 서버로의 HTTP 요청(Request) 메시지를 보내는 목적이나 종류를 사전에 전달하는 수단으로 사용되는 것이 HTTP Method(메소드)이다.

 

 서버로 요청(Request)할 때, 해당 HTTP 메시지가 데이터의 조회를 목적으로 하는지, 데이터의 삽입을 목적으로 하는지 사전에 전달하는 것을 의미한다.

 

 

2.HTTP Method 종류 및 설명

 클라이언트가 서버로 HTTP 요청(Request) 메시지를 보내는 목적은, 데이터의 조회, 신규 사용자 추가, 금액 수정, 게시글 삭제 등 매우 다양하다.  그렇기에 HTTP 요청 메시지의 목적을 전달하는 HTTP Method도 다양하게 존재한다.

 

 일부 Method에서는 유사한 목적을 전달하는데 사용되나, 멱등 법칙(멱등성)에 따른 수행 결과에 차이점이 발생한다.

 ※ 멱등 법칙(멱등성, Idempotent) : 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질

  Method 명칭 설명
1 GET  지정된 리소스에서 데이터 요청(조회), HTTP 헤드 시작줄에 요청 데이터 포함
2 HEAD  GET과 유사하나 응답 HTTP 메시지의 바디 값이 존재하지 않음 (HTTP 헤드만 표시)
3 POST  리소스의 생성 및 업데이트 요청, HTTP 바디에 요청 데이터 포함
 PUT과 유사하나, A 리소스 생성을 반복 요청 할시, A 리소스가 요청 회수만큼 생성됨
4 PUT  리소스의 생성 및 업데이트 요청 (POST와 유사하나, 멱등 법칙(멱등성)을 적용 받음)
 멱등 법칙에 의해, A 리소스 생성을 반복 요청하여도 A 리소스 생성은 한 번만 수행됨
5 DELETE  지정된 자원(리소스)를 삭제
6 CONNECT  요청된 리소스와 양방항 통신을 시작
7 OPTOINS  지정된 리소스와 통신 가능한 Method 설명
8 TRACE  대상 리소스의 경로를 테스트하는 메시지 루프백 테스트 수행
9 PATCH  리소스에 대한 수정

 HTTP Method는 초기에는 GET Method만이 존재하였다. 당시에는 웹 서버에 저장되어 있는 리소스(html 파일)를 조회하는 기능이 주였기 때문이다. 그러나 점차 기술이 발전하고 웹 서버에서 데이터 연산이 가능함에 따라, 리소스 생성, 리소스 변경, 리소스 삭제 등을 위한 Method들이 추가되게 되었다.

 

 ※ 참조 1 (HTTP RFC 문서) : https://www.rfc-editor.org/rfc/rfc7231

 

 ※ 참조 2 (PATCH RFC 문서) : https://www.rfc-editor.org/rfc/rfc5789

 

 

3.HTTP Staus Code (HTTP 상태코드)란?

서버에서 클라이언트로 HTTP 응답 메시지를 전송할 때, HTTP 요청 메시지의 처리 결과를 의미한다. HTTP Status Code (이하 HTTP 상태코드)는 3자리 숫자로 표시되며 대략 40여개로 정의되어 있으며, 각 첫번째  자리 숫자를 기반으로 5개의 대분류로 나눌 수 있다.

 

 ※ 참조 : https://www.rfc-editor.org/rfc/rfc2616

 

HTTP 상태코드 설명 비고
1xx  요청을 정상 수신 받아, 처리가 진행 중일 시 응답 정보
2xx  요청을 정상 수신 받아, 처리하였을 시 응답 성공
3xx  요청을 정상 처리를 위해서는 추가 행위가 필요할 시 응답 리다이렉트
4xx  잘못된 문법 등으로 발생한 클라이언트 오류 응답 클라이언트 오류
5xx  서버가 유효한 요청을 수행하지 못하는 서버 오류 응답 서버 오류

 

4.HTTP Status Code 종류 및 설명

※ 참조 1 (위키): https://ko.wikipedia.org/wiki/HTTP_%EC%83%81%ED%83%9C_%EC%BD%94%EB%93%9C

※ 참조 2 (모질라재단) : https://developer.mozilla.org/en-US/docs/Web/HTTP/Status

※ 참조 3 (W3 RFC) : https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

 

 

1) HTTP 1xx 상태코드 상세

HTTP 상태코드 설명
100  (계속) 클라이언트의 지속적인 요청을 요구
101  클라이언트에서 전송된 HTTP 헤더 내 Upgrade 요청에 따라,  정상적으로 프로토콜이 전환됨
 Websocket 프로토콜로 전환 시 응답하는 경우
102  클라이언트의 요청을 수신하였으나, 처리 중

2) HTTP 2xx 상태코드 상세

HTTP 상태코드 설명
200  오류 없이 정상적으로 요청을 처리함
201  오류 없이 정상적으로 요청을 처리하였으며, 신규 리소스가 생성됨
202  요청을 수신하였지만, 수락만 하였으며 처리하진 않음
203  수신된 요청 중 일부만 처리하여 응답
 오리진 서버에서의 응답과 일치하지 않지만, 로컬이나 서드 파티 복사본에서 전달됨을 의미
204  요청에 대한 HTTP 응답 메시지의 HTTP 바디(콘텐츠)는 없지만, HTTP 헤드는 응답됨
 리소스가 삭제되는 등, 요청된 리소으에 대한 응답 값이 존재하지 않는 경우 (DELETE Method)
205  요청을 정상적으로 처리하였으며, 클라이언트의 문서 뷰를 리셋하라고 응답
206  Range 헤더가 포함된 요청을 처리 후, Rnage 헤더에 포함된 데이터 부분을 응답
207  여러 리소스가 여러 상태 코드인 상황에서, 가장 적절한 경우에 해당되는 정보 전달 시 응답

3) HTTP 3xx 상태코드 상세

HTTP 상태코드 설명
300  요청에 대해 한 가지 이상을 응답하여, 클라이언트에서 하나를 선택하여 응답 받도록 재요청
301  요청된 리소스의 URI가 변경되어 새로운 URI를 응답
302  요청된 리소스의 URI가 일시적으로 변경되었으며, 임시 URI를 응답
303  요청된 리소스가 GET Method를 이용한 다른 URI로 호출될 시 응답
304  캐싱를 목적으로 이용되며, 응답이 변경되지 않았으므로 클라이언트가 기존 캐시를 사용할 시 응답
305  요청 처리를 위해서 프록시를 통한 접속을 응답
307  요청된 리소스의 URI가 변경되어, 임시 URI를 응답하여 HTTP 302와 유사함
 이전 요청과 동일한 Method로, 클라이언트가 재요청해야하는 차이점이 존재
308  요청된 리소스의 URI가 변경되어, 새로운 URI를 응답하여 HTTP 301과 유사함
 이전 요청과 동일한 Method로, 클라이언트가 재요청해야하는 차이점이 존재

4) HTTP 4xx 상태코드 상세

HTTP 상태코드 설명
400  잘못된 문법으로 인하여 서버가 요청을 이해하지 못할 시 응답
401  인증되지 않은 클라이언트에서 인증이 필요한 리소스를 요청할 시 응답
 로그인되지 않은 클라이언트에서 서버로 인증이 필요한 리소스를 요청
402  개발 당시, 결제 시스템에 향후 사용 목적으로 예비용으로 설정하였으나 실제 이용은 적음
403  클라이언트에서 리소스에 대한 액세스 권한이 없는 경우에 응답
 HTTP 401과 차이점은 서버에서, 해당 클라이언트는 식별된 상황 (로그인)
404  클라이언트에서 요청 받은 리소스를 서버에서 찾을 수 없을 시 응답
405  클라이언트에서 HTTP 요청 메시지의 Method를 이해는 했지만, 사용될 수 없는 경우에 응답
406  클라이언트의 요청에 적절한 리소스를 응답할 수 없는 경우
407  프록시에 의해 완료된 인증이 없는 경우에 응답 
 HTTP 401과 유사하며, Proxy 인증이 차이점
408  오래된 요청에 대해, 서버가 사용되지 않는 연결을 제거할 시 응답
 이 응답은 Chrome, Firefox(27+), IE9에서 웹 서핑 속도 증가를 위한 메커니즘에 의해 주로 응답됨
409  클라이언트의 요청이 서버에서 충돌이 발생한 경우에 응답
 PUT Method에 의해 다른 버전의 파일이 업로드될 시 주로 응답됨 
410  클라이언트에서 요청된 콘텐츠가 영구적으로 삭제되어,  대체 주소도 존재하지 않을 시 응답
 클라이언트에서 요청된 콘텐츠와 관련된 캐시와 리소스에 대한 링크를 삭제하도록 응답
411  클라이언트에서 HTTP 헤더에 서버에서 필요한 Content-Length가 없는 경우에 응답
412  클라이언트에서 전송된 HTTP 헤더에 서버가 충족하지 않는 헤더가 포함될 시 응답
413  클라이언트에서 요청이 서버에서 정의한 한계 수치보다 클 경우에 응답
414  클라이언트에서 요청된 URI가 서버에서 처리되는 길이보다 긴 경우에 응답
415  클라이언트에서 요청된 미디어 포맷이 서버에서 지원하지 않는 경우에 응답
416  클라이언트에서 요청된 Range 헤더 필드 값 범위가 URI 크기를 벗어났을 경우에 응답
417  클라이언트에서 요청된 Expect 헤더 필드 값이 서버에서 지원하지 않는 경우에 응답
418  HTCPCP 메소드에 대한 응답 값으로, 만우절 장난으로 만들어진 커피 서비스를 위한 응답
421  클라이언트에서 요청된 URI와 연결된 스킴과 권한을 구성하여 응답을 생성할 수 없는 경우에 응답
423  클라이언트에서 요청된 URI에 접근하지 못하도록 잠금 처리되었을 시 응답
426  현재 요청된 Upgrade 헤더로 처리가 불가하나, 변경 시 요청 처리가 가능한 경우에 응답
 응답 시, 가능한 Upgrade 헤더와 프로토콜 정보를 같이 회신
429  클라이언트가 지정된 시간 안에 너무 많은 요청을 보낸 경우에 응답
431  클라이언트에서 요청된 헤더 필드가 너무 커서, 서버에서 요청을 처리하지 않는 경우에 응답
451  클라이언트에서 요청된 URI가 정부 등에서 검열된 경우에 응답

5) HTTP 5xx 상태코드 상세

HTTP 상태코드 설명
500  서버에 문제가 있을 시 응답 (상세 정보를 확인할 순 없음)
501  요청을 처리하기 위한 기능이 서버에 없는 경우에 응답
502  서버가 게이트웨이로부터 잘못된 응답을 수신한 경우에 응답
 서버가 다른 서버로부터 유효한 값을 정상적으로 회신 받지 못한 경우에 발생
503  서버의 일부 외부 서비스가 멈추거나, 이용할 수 없는 상태일 시 응답
 과부하 또는 점검 등으로 서버 동작이 중단된 경우에 응답
504  프록시나 게이트웨이 역할을 수행하고 있는 서버가 다른 서버로부터 응답을 받지 못한 경우에 응답
505  클라이언트에서 서버에서 허용되지 않는 HTTP 버전으로 요청한 경우에 응답
506  서버 내부 구성 오류가 발생한 경우에 응답
507  서버에서 처리된 요청을 저장할 수 있는 공간이 부족한 경우에 응답
508  서버가 요청 처리 간 무한 루프에 빠진 경우에 응답
510  서버에서 요청 처리를 위해서는 추가적인 기능이 필요한 경우에 응답
511  클라이언트가 네트워크 액세스 권한을 획득하기 위해서는 인증이 요구될 시 응답

 

'기초 공부 > ' 카테고리의 다른 글

[WEB] HTML / CSS / Javascript 란 ? _ 1편 HTML  (0) 2022.10.31
[WEB] 쿠키와 세션 (Cookie &Session)  (0) 2022.10.06
[WEB] 웹 브라우저란?  (0) 2022.09.30
[WEB] HTTP /HTTPS 이란?  (0) 2022.09.27
[WEB] WEB이란?  (0) 2022.09.26