본문 바로가기
Engineering WIKI/Docs

HTTP 메소드

by wonos 2022. 12. 18.

 

 

RFC 2616: Hypertext Transfer Protocol -- HTTP/1.1

HTTP has been in use by the World-Wide Web global information initiative since 1990. This specification defines the protocol referred to as "HTTP/1.1", and is an update to RFC 2068. [STANDARDS-TRACK]

datatracker.ietf.org

9가지 : GET, POST, PUT, DELETE, HEAD, OPTIONS, TRACE, CONNECT, (SEARCH)

 

HTTP 메소드는 클라이언트가 웹 서버에게 사용자 요청의 목적이나 종류를 알리는 수단 이다. 최초의 HTTP에서는 GET 메소드 하나밖에 없었지만 이후 다양한 메소드들이 생겨났다.

 

  • GET 설명
    : GET 요청 방식은 URI(URL)가 가진 정보를 검색하기 위해 서버 측에 요청하는 형태이다
    • 전송형태
      • GET [request-uri]?query_string
      • HTTP/1.1\r\n
      • Host:[Hostname] 혹은 [IP] \r\n
  • POST 설명
    : POST 요청 방식은 요청 URI(URL)에 폼 입력을 처리하기 위해 구성한 서버 측 스크립트(ASP, PHP, JSP 등) 혹은 CGI 프로그램으로 구성되고 Form Action과 함께 전송되는데, 이때 헤더 정보에 포함되지 않고 데이터 부분에 요청 정보가 들어가게 된다.
    • 전송형태
      • POST [request-uri]?query_string
      • HTTP/1.1\r\n
      • HOST:[Hostname] 혹은 [IP] \r\n
      • Content-Lenght:[Lenght in Bytes] \r\n \r\n [query-string] 혹은 [데이터]
  • HEAD 설명
    : HEAD 요청 방식은 GET과 유사한 방식이나 웹 서버에서 헤더 정보 이외에는 어떤 데이터도 보내지 않는다.
    웹 서버의 다운 여부 점검(Health Check)이나 웹 서버 정보(버전 등)등을 얻기 위해 사용될 수 있다.
    • 전송형태
      • HEAD [request-uri] HTTP/1.1\r\n
      • Host:[Hostname] 혹은 [IP] \r\n
  • OPTIONS 설명
    : 해당 메소드를 통해 시스템에서 지원되는 메소드 종류를 확인할 수 있다.
    • 전송형태
      • OPTIONS [request-ri]
      • HTTP/1.1\r\n
      • Host:[Hostname] 혹은 [IP] \r\n
  • PUT 설명
    : POST와 유사한 전송 구조를 가지기 때문에 헤더 이외에 메시지(데이터)가 함께 전송된다.
    원격지 서버에 지정한 콘텐츠를 저장하기 위해 사용되며 홈페이지 변조에 많이 악용되고 있다.
    • 전송형태
      • PUT [request-uri] HTTP/1.1\r\n
      • Host:[Hostname] 혹은 [IP] \r\n
      • Content-Lenght:[Length in Bytes] \r\n
      • Content-Type:[Content Type] \r\n \r\n [데이터]
  • DELETE 설명
    : 원격지 웹 서버에 파일을 삭제하기 위해 사용되며 PUT과는 반대 개념의 메소드이다.
    • 전송형태
      • DELETE [request-uri] HTTP/1.1\r\n
      • Host:[Hostname] 혹은 [IP] \r\n \r\n
  • TRACE 설명
    원격지 서버에 Loopback(루프백) 메시지를 호출하기 위해 사용된다. 루프백 아이피란? IPv4 및 Ipv6에서 자기 자신을 가리키기 위한 목적으로 쓰기 위해 예약된 IP 주소
    • 전송형태
      • TRACE [request-uri] HTTP/1.1\r\n   
      • Host:[Hostname] 혹은 [IP] \r\n \r\n
  • CONNECT 설명
    : 웹 서버에 프락시 기능을 요청할 때 사용된다
    • 전송형태
      • CONNECT [request-uri] HTTP/1.1\r\n
      • Host:[Hostname] 혹은 [IP] \r\n \r\n

 

SEARCH 메소드

  • IETF에 새 Draft로 추가된 SEARCH 메소드 소개
  • 복잡한 데이터를 가져오기 위해선 기존 GET/POST 만으로는 비효율적

    SEARCH /customers HTTP/1.1
    Host: example.com
    Content-Type: application/sql

    SELECT username, email
    WHERE DATEDIFF(DAY, GETDATE(), signup_date) > 7
  • 실제로 SQL문장이 표준으로 사용되는 건 아니고, 리퀘스트 바디에 검색을 위한 이런 컨텐츠가 가능하다는 것
  • 이를 통해서 한개의 URL에 대해서 GET,POST,SEARCH 가 모두 가능해짐
    - Accept-Search 헤더를 통해서, 검색에 사용하는 포맷들을 지정 가능 :
    ㅤ→ Accept-Search: application/sql, application/graphql
    - WebDAV 에 있었던 SEARCH 메소드 표준에 기반 (rfc5323)