1. HTTP 프로토콜에서, 요청 메소드
ㅇ 클라이언트가 웹서버에게 요청하는 목적 및 그 종류를 알리는 수단
※ 요청 메소드의 위치 : HTTP 요청 메세지의 첫째줄 첫째항
- 例) GET /dir/page.html HTTP/1.1
2. 요청 메소드의 종류
ㅇ GET : 리소스 취득
- URL(URI) 형식으로 웹서버측 리소스(데이터)를 요청
* 한편, Conditional GET 이란? (웹브라우저의 캐싱 기능에 도움을 줌)
. 최초 리소스를 요청할 때는 요청만 하고,
. 이후 요청 때는 첫 요청의 응답에 함께 온 HTTP 헤더 정보를 참고하여,
. 변경사항이 있는지 물어보는 GET
. 캐싱에 중요한 HTTP 헤더 정보 : Last-Modified, eTag 등
ㅇ POST : 내용 전송 (파일 전송도 가능)
- 클라이언트에서 서버로 어떤 정보를 제출함
. 요청 데이터를 HTTP 바디에 담아 웹서버로 전송함
- 이때, 요청 데이터의 HTTP 헤더에 아래 처럼 설정함 ☞ HTTP 엔터티 헤더 항목, 폼 요소 참조
. Content-Type:application/x-www-form-urlencoded
.. 이는 해당 개체가 폼으로 전송하는 데이터 임을 알리는 HTTP 헤더 형식 임
- 만일, 요청된 리소스가 새로이 작성된 또다른 것이라면,
. 서버측은 HTTP 헤더 항목 중 `Location:`에다가
. 새로이 작성된 리소스에 대한 URL 정보를 포함시켜 응답하게 됨
※ 한편, HTML Form 요소에서는, GET,POST 메소드 만 지원됨
ㅇ HEAD : 메세지 헤더(문서 정보) 취득
- GET과 비슷하나, 실제 문서를 요청하는 것이 아니라, 문서 정보를 요청
. 이에따라 HTTP 응답 메세지에 본문(Body)이 없이 HTTP 헤더 정보 만을 보냄
ㅇ PUT : 내용 갱신 위주 (파일 전송도 가능)
- POST 처럼 정보를 서버로 제출하는 것으로 형식은 동일하나, 갱신 위주 임
. 이에 의해 갱신된 리소스에 대한 주소 정보를, POST와는 달리
서버측 응답메세지의 HTTP 헤더 항목 중에 `Location:`을 보내지 않아도 됨
. 즉, 서버측은 클라이언트 측이 제시한 URI를 그대로 사용하는 것으로 간주함
- PUT는 클라이언트측이 서버측 구현에 관여하는 것이므로,
. 통상 보다 세밀한 POST를 더 많이 씀
ㅇ DELETE : 파일 삭제
- 웹 리소스를 제거
ㅇ OPTIONS : 웹서버측 제공 메소드에 대한 질의
- 가능한 메소드 옵션에 대한 질의
. 이 경우 응답메세지에 HTTP 헤더 항목 중 `Allow: GET,POST,HEAD` 처럼 보내게 됨
ㅇ TRACE : (거의 사용 안함)
- 요청 리소스가 수신되는 경로를 보여줌
ㅇ CONNECT : (거의 사용 안함)
- 프락시 서버와 같은 중간 서버 경유
. 例) 웹브라우저는 `CONNECT www.original_server.com:80 HTTP/1.0` 뒤에,
.. 일련의 HTTP 헤더 항목들과 빈 줄(CRLF)로써, 프록시 서버에게,
.. 원하는 웹서버와의 중계 연결 요청을 함
※ 한편, 보안상의 이유로,
- 대부분의 웹서버가, GET,POST 2개 또는 OPTIONS 포함 3개 만을 허용하는 경우가 일반적임