출처: https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/Messages
HTTP 요청-응답 메시지는 크게 Start Line, Headers, Body 3개의 구성요소로 이루어져 있다.
각 구성요소는 어떤 정보를 담고 있는지 살펴보자.
HTTP 패킷의 최상단에 위치하여 메시지의 핵심 목적과 상태를 가장 먼저 전달하는 역할을 한다.
요청 메시지: <method> <request-target> <protocol>
methodrequest-targetprotocolPOST /admin HTTP/1.1응답 메시지: <protocol> <status-code> <status-text>
protocolstatus-textstatus-code에 대한 간단한 텍스트 설명을 포함한다. status-code는 숫자로면 표현되어 있어 사람이 직관적으로 이해하기 어려우므로, 사람이 쉽게 이해할 수 있도록 돕는 역할을 한다.HTTP/1.1 200 OK메시지를 설명하는 메타데이터들이 담겨있다.
요청, 응답에서 공통으로 사용하는 정보.
Date: Mon, 18 Jul 2016 16:06:00 GMTConnection: keep-alive, Connection: closeCache-Control: no-cache,Cache-Control: max-age=3600등이 포함된다.
Body로 전송되는 데이터의 메타데이터를 포함한다.
Content-Type: application/json, Content-Type: application/x-www-form-urlencodedContent-Length: 20attachment) HTTP/1.1 200 OK
Content-Type: application/pdf
Content-Disposition: attachment; filename="example.pdf"
%PDF-1.4
...PDF 파일의 바이너리 데이터...
multipart/form-data)HTTP/1.1 200 OK
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="text1"
Hello, this is text data.
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="file1"; filename="example.txt"
Content-Type: text/plain
This is the content of example.txt file.
------WebKitFormBoundary7MA4YWxkTrZu0gW--
등이 포함된다.
아래는 HTTP 요청 메시지에서 주로 사용하는 헤더 필드들이다.
Host: www.heiler.comUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)Accept: text/html, application/jsonAccept-Language: en-US,en;q=0.5아래는 HTTP 응답 메시지에서 주로 사용하는 헤더 필드들이다.
Server: Apache/2.4.1 (Unix)Set-Cookie: my-key=my value; expires=Mon, 17-Jul-2017 16:06:00 GMT; Max-Age=31449600; Path=/; HttpOnly요청 메시지는 HTTP method가 PATCH, POST, PUT인 경우에만 Body를 포함한다.
응답 메시지는 클라이언트의 요청에 대한 적절한 리소스를 Body에 담고 있다.