HTTP 的訊息格式分成兩種:request messages 以及 response messages。
我們以curl取得一組request messages 以及 response messages的例子:
> curl -v http://example.com* Trying 93.184.216.34:80...
* TCP_NODELAY set
* Connected to example.com (93.184.216.34) port 80 (#0)
> GET / HTTP/1.1
> Host: example.com
> User-Agent: curl/7.68.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Age: 600574
< Cache-Control: max-age=604800
< Content-Type: text/html; charset=UTF-8
< Date: Sat, 26 Feb 2022 10:19:07 GMT
< Etag: "3147526947+ident"
< Expires: Sat, 05 Mar 2022 10:19:07 GMT
< Last-Modified: Thu, 17 Oct 2019 07:18:26 GMT
< Server: ECS (sab/573F)
< Vary: Accept-Encoding
< X-Cache: HIT
< Content-Length: 1256
<
<!doctype html>
<html>
<head>
<title>Example Domain</title>
<meta charset="utf-8" />
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type="text/css">
body {
background-color: #f0f0f2;
margin: 0;
padding: 0;
font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
}
div {
width: 600px;
margin: 5em auto;
padding: 2em;
background-color: #fdfdff;
border-radius: 0.5em;
box-shadow: 2px 3px 7px 2px rgba(0,0,0,0.02);
}
a:link, a:visited {
color: #38488f;
text-decoration: none;
}
@media (max-width: 700px) {
div {
margin: 0 auto;
width: auto;
}
}
</style>
</head>
<body>
<div>
<h1>Example Domain</h1>
<p>This domain is for use in illustrative examples in documents. You may use this
domain in literature without prior coordination or asking for permission.</p>
<p><a href="https://www.iana.org/domains/example">More information...</a></p>
</div>
</body>
</html>
* Connection #0 to host example.com left intactHTTP Request Message
GET / HTTP/1.1
Host: example.com
User-Agent: curl/7.68.0
Accept: */*第一行稱作request line,接下來三行是head lines,head lines可以有數行不同的header field name及value,第六行開始是Entity Body,這個例子沒有放任何東西。
完整結構如下:

HTTP Response Messages
HTTP/1.1 200 OK
Age: 600574
Cache-Control: max-age=604800
Content-Type: text/html; charset=UTF-8
Date: Sat, 26 Feb 2022 10:19:07 GMT
Etag: "3147526947+ident"
Expires: Sat, 05 Mar 2022 10:19:07 GMT
Last-Modified: Thu, 17 Oct 2019 07:18:26 GMT
Server: ECS (sab/573F)
Vary: Accept-Encoding
X-Cache: HIT
Content-Length: 1256
<!doctype html>
以下省略第一行是status line,後面數行是header lines,最後<!doctype html>開始是entity body。
完整結構如下:
