CS/네트워크

HTTP 메소드와 상태코드

D_Helloper 2022. 11. 29. 15:24

HTTP 메소드와 상태코드

HTTP란 ?


HTTP(Hyper Text Transfer Protocol)는 인터넷에서 데이터를 주고받을 수 있는 프로토콜

클라이언트와 서버 사이에 이루어지는 요청/응답 (request/response) 프로토콜

HTTP 메소드란?


클라이언트가 웹 서버에 사용자의 요청과 해당 요청의 종류를 알리는 수단

HTTP 메소드 종류


GET

  • 서버에게 리소스를 달라는 요청

HEAD

  • GET과 같지만, 서버는 응답으로 헤더만 반환
  • 클라이언트는 리소스를 가져올 필요 없이 헤더만을 통해 정보를 얻어옴

PUT (수정)

  • 서버가 Request의 본문을 갖고 요청 URI의 이름대로 새 문서를 만들거나, 요청 본문을 변경할 때 사용

PATCH (수정)

  • 부분적인 수정을 적용하기 위한 메서드

POST (삽입)

  • 서버에 입력 데이터를 전송하며 Request의 Body에 데이터를 넣어 서버에 전송

DELETE(삭제)

  • 서버에서 요청받은 URI 리소스를 삭제하도록 요청
  • 클라이언트에서는 항상 삭제된다고 생각하지만, 서버에서 해당 요청을 무시할 수 있음

CONNECT

  • 동적으로 터널 모드를 교환, 프락시 기능을 요청시 사용

OPTIONS

  • 타겟 서버가 어떠한 메서드들을 지원하는지 알아보기 위한 메서드

TRACE

  • packet의 변조를 확인하기 위해 사용
  • 원본 데이터와 서버에 도달했을 때의 비교본 데이터를 서버의 응답 Body를 통해 확인할 수 있음
  • 요청의 최종 수신자는 반드시 송신자에게 200 응답의 Body로 수신한 메시지를 반송해야 함
  • 최초 클라이언트의 요청에는 Body가 포함될 수 없음

RFC(Request for Comments)?

    • RFC 7231 : HTTP/1.1에 대한 명세 문서
    • RFC 5789 : PATCH Method for HTTP 에 대한 명세 문서미국의 국제 인터넷 표준화기구인 IETF(Internet Engineering Task Force)에서 제공, 관리하는 문서로 각종 기술들의 표준이나 기술, 연구 결과, 절차 등을 정리해 놓음

HTTP 상태 코드

1XX (정보 제공)

코드 메시지 설명
100 Continue 클라이언트로부터 일부 요청을 받았으니 나머지 요청 정보를 계속 보내주기 바람.
101 Switching Protocols 서버는 클라이언트의 요청대로 Upgrade 헤더를 따라 다른 프로토콜로 바꿀 것

2XX (성공)

코드 메시지 설명
200 OK 요청이 성공적으로 수행되었음을 의미, 주로 GET 요청에 대한 응답
202 Created 요청이 성공적으로 수행되었으며, 그 결과로 새로운 리소스가 생성됨을 의미. 주로 POST 요청에 대한 응답
203 Non-Authoritaive Information 요청이 성공적으로 수행되었으나, 요청에 대한 검증이 되지 않았음을 의미
204 No Content 요청이 성공적으로 수행 되었고, 응답 payload에 보낼 데이터가 없음을 의미. 주로 DELETE 요청에 대한 응답
205 Reset Content 서버가 요청을 성공적으로 처리했지만 콘텐츠를 표시하지 않음. 클라이언트가 콘텐츠를 재 설정할 것을 요구해야 함
206 Partial Content 서버가 GET 요청의 일부만 성공적으로 처리했음을 의미

3XX : 리다이렉션 완료

코드 메시지 설명
300 Multiple Choices 요청에 대해 하나 이상의 리소스가 존재함
301 Moved Permanently 요청한 리소스의 URI가 변경되었음을 의미
302 Found 요청한 리소스의 URI가 일시적으로 변경됨
303 See Other 요청한 리소스를 다른 URI에서 GET 요청을 통해 얻어가야 할 때의 응답
304 Not Modified 수정되지 않았음을 의미
307 Temporary Redirect 302와 유사하며, User-Agent가 반드시 HTTP 메소드를 변경하지 말아야 한단 점만 다름
308 Permanent Redirect 301과 유사하며, User-Agnet가 반드시 HTTP 메소드를 변경하지 말아야 한단 점만 다름

4XX (클라이언트 요청 오류)

코드 메시지 설명
400 Bad Request 잘못된 요청을 의미
401 Unauthorized 인증이 필요하다는 의미의 상태 코드.

상태 코드 이름이 권한 없음(Unauthorized)로 되어 있지만 실제 뜻은
인증 안됨(Unauthenticated)에 더 가까움
402 Payment Required 디지털 결제 시스템에 사용하기 위하여 만들어져 있지만 사용되지 않음
403 Forbidden 콘텐츠에 접근할 권한이 없음, 401과 다른 점은 서버가 클라이언트를 알고 있음,
근데 접근 안 시켜줌
https://dextto.tistory.com/234 (인증과 인가)
404 Not Found 요청받은 리소스를 찾을 수 없음
405 Mothod Not Allowed 요청 메소드를 제거 하는 것. 필수적인 메소드인 GET과 HEAD는 제거될 수 없음

5XX (서버 에러)

코드 메시지 설명
500 Internal Server Error 서버에 오류가 발생하여 요청을 수행할 수 없음
501 Not Implemented 서버에 요청을 수행할 수 없는 기능이 없음 ( 처리 메소드가 구현되어 있지 않음 )
502 Bad Gateway 서버가 게이트웨이로부터 잘못된 응답을 수신 했음을 의미
503 Service Unavailable 서버가 현재 요청을 처리할 수 없는 상태임을 의미
504 Gateway Timeout 제 때 응답을 받지 못했음을 의미
505 HTTP Version Not Supported 서버에서 지원되지 않는 HTTP 프로토콜 버전을 사용하여 요청 했을 때.