HTTP Request 메소드
클라이언트가 웹 서버에게 사용자 요청의 목적/종류를 알리는 수단
최초의 HTTP에서 메소드는 GET밖에 존재하지 않았고 응답은 무조건 HTML문서 였다.
HTTP 메소드 종류 | 전송 형태 | 설명 |
GET | GET [request-uri]?query_string HTTP/1.1\r\n Host:[Hostname] 혹은 [IP]\r\n |
URI(URL) 형식으로 서버 측 리소스(데이터) 요청 |
POST | 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] 혹은 [데이터] |
URI(URL)에 폼 입력을 처리하기 위해 구성한 서버 측 스크립트 혹은 CGI 프로그램으로 구성되고 Form Action과 함께 전송되는데, 이때 헤더 정보는 포함되지 않고 데이터 부분에 요청 정보가 들어가게 된다. |
HEAD | HEAD [request-uri] HTTP/1.1\r\n Host:[Hostname] 혹은 [IP] \r\n |
GET과 유사한 방식이나 웹 서버에서 메세지 헤더(문서 정보) 이외에는 어떤 데이터도 보내지 않는다. 웹 서버의 다운 여부 점검(Health Check)이나 웹 서버 정보(버전 등)등을 얻기 위해 사용될 수 있다. |
OPTION | OPTIONS [request-ri] HTTP/1.1\r\n Host:[Hostname] 혹은 [IP] \r\n |
시스템에서 지원되는 메소드 종류 확인할 수 있다. |
PUT | 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 [데이터] |
POST와 유사한 전송 구조를 가지기 때문에 헤더 이외에 메세지(데이터)가 함께 전송된다. 원격지 서버에 지정한 콘텐츠를 저장하기 위해 사용되며 홈페이지 변조에 많이 악용되고 있다. |
DELETE | 원격지 서버에 파일을 삭제. PUT과 반대 | |
TRACE | 루프백 메시지 호출 | |
CONNECT | 프락시 기능 요구 | |
PATH | PATCH [request-uri] HTTP/1.1 Host: [Hostname] Content-Type: [Content Type] If-Mathch Content-Length: [Length in Bytes] |
부분 수정 |
HTTP 상태 코드
- 1XX : 정보
- 2XX : 성공
- 200 : OK. 요청 성공
- 201: Created. 생성 요청 성공
- 202 : Accepted. 요청 수락(처리 보장 X)
- 204 : 성공했으나 돌려줄게 없음
- 3XX : 리다이렉션
- 300 : Multiple choices. 여러 리소스에 대한 요청 결과 목록
- 301, 302, 303 : Redirect. 리소스 위치가 변경된 상태
- 304: Not Modified. 리소스가 수정되지 않았음
- 4XX : 클라이언트 오류
- 400 : Bad Request. 요청 오류
- 401 : Unauthorized. 권한 없음
- 403 : Forbidden. 요청 거부
- 404: Not Found. 리소스가 없는 상태
- 5XX : 서버 오류
- 500 : Internal Server Error. 서버가 요청을 처리 못함
- 501 : Not Implemented: 서버가 지원하지 않는 요청
- 503 : Service Unavailable. 과부하 등으로 당장 서비스가 불가능한 상태
MIME 타입
Content-Type.
클라이언트에게 전송된 문서의 다양성을 알려주기 위한 메커니즘.
웹에서는 파일의 확장자는 별 의미가 없다. 그래서 각 문서와 함께 올바른 MIME 타입을 전송한다.
Discrete types(개별 타입)
Multipart types(멀티파트 타입)
주요 컨텐츠 타입
- text/plain, text/html
- application/xml, application/json
- image/png, image/jpg
- audio/mp3, video/mp4