클라이언트는 사용자의 요청에 따라 다음과 같은 형태의 request 메시지를 구성해 서버에 전송한다.
Simple-request = GET SP Request-URI CRLF(HTTP/0.9)
Full-Request = Request-Line (HTTP/1.0)
General-Header
Request-Header
Entity-Header
CRLF
Entity-Body
Request-Line
Request-Line은 Full-Request 메시지의 첫 부분으로 반드시 존재해야 하며 형식은 다음과 같다.
Request-Line = Method SP Request-URI SP HTTP-Version CRLF
예) GET http://qaos.com/index.htm HTTP/1.0
Method
자원을 요청 방법을 지정하는 항목으로 GET, HEAD, POST 중 하나의 값을 갖는다.
- GET
- 자원의 요청시 가장 일반적으로 사용되는 방법으로 If-Modified-Since header field를 이용할 경우 조건부 GET이 가능하다. 조건부 GET는 주로 cache되어있는 entity를 갱신하는데 사용된다.
- HEAD
- GET과 동일하지만 Entity-Body 부분을 서버가 보내주지 않는다. 따라서 특정 하이퍼 링크의 존재여부를 검사하는데 사용된다.
- POST
- GET과의 가장 큰 차이점은 Request 메시지에 서버에 전달될 entity를 포함할 수있다는 것이다. 따라서 서버와 다량의 데이터를 주고 받는데 적합하므로 방명록과 같은 Form을 처리하는데 많이 사용된다. 단 POST를 사용하는 경우 Request 메시지에 데이터의 크기(Entity-Body의 크기)를 함께 전송해야 한다.
Request-URI
요청한 자원의 위치를 나타내는 항목으로 일반적으로 절대 경로를 사용하며, 프록시 서버를 경우하는 경우에만 절대 URI를 사용한다.
절대 URI
Proxy 서버가 있는 경우 전달되는 형식
GET http://qaos.com/index.htm HTTP/1.0
절대 path
프록시 서버가 없는 경우 절대 경로만 Reuest-URI로 변환되어 서버에 전달된다.
GET /index.htm HTTP/1.0
HTTP Version
현재 통신에 사용중인 HTTP의 버전을 표시한다. 프로토콜/x.x의 형식을 사용한다.
Request-Header
Accept Request Header
request 응답의 형태(전달되는 entity의 미디어 타입)를 지정한다.
Accept: audio/basic; q=0.1; mxb=100000
Authorization Request Header
사용자 인증을 필요로 하는 경우, 사용자명과 암호를 전달한다.
Authorization: anVuaG9sZWU6bGVla2luZw==
From Request Header
문서를 요청한 사용자의 e-mail 주소를 전달한다.
From: [email protected]
If-Modified-Since Request Header
요청한 URI 자원이 변경된 경우만 그 자원을 전송해 주도록 요청한다.
GET /nas.html HTTP/1.0
If-Modified-Since: Web,10 Jul 1996 19:00:00
Referer Request Header
링크를 제공한 문서의 URI를 전송한다.
Refer: http://qaos.com/mail.htm
User-Agent Request Header
클라이언트 소프트웨어에 대한 정보를 전송한다.
User-Agent: CERN-LineMode/2.15 libwww/2.17b3