GET http://example.com/ HTTP/1.1
Host: example.com
Proxy-Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.200
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
HTTP/1.1 200 OK
Via: 1.1 10.30.6.41 (Skyhigh Secure Web Gateway 12.2.11.49886)
Date: Sat, 22 Feb 2025 05:51:46 GMT
ETag: "84238dfc8092e5d9c0dac8ef93371a07:1736799080.121134"
X-Cache: MISS from 10.30.6.41
Content-Type: text/html
Accept-Ranges: bytes
Cache-Control: max-age=2520
Last-Modified: Mon, 13 Jan 2025 20:11:20 GMT
Proxy-Connection: Keep-Alive
Transfer-Encoding: chunked
<!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>
以下是对这个 HTTP 请求和响应的详细分析和解释:
HTTP 请求部分
GET http://example.com/ HTTP/1.1
Host: example.com
Proxy-Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.200
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
1. 请求行
GET http://example.com/ HTTP/1.1
- GET:请求方法,表示客户端希望从服务器获取资源。
- http://example.com/:请求的 URI(统一资源标识符),指定了客户端希望访问的资源路径。
- HTTP/1.1:使用的 HTTP 协议版本。
2. 请求头
Host: example.com
指定请求的目标主机名(域名)。HTTP/1.1 要求必须包含此字段,用于支持虚拟主机(一个 IP 地址托管多个域名)。Proxy-Connection: keep-alive
指示客户端希望与代理服务器保持持久连接(HTTP/1.1 默认支持持久连接)。Upgrade-Insecure-Requests: 1
表示客户端希望将不安全的 HTTP 请求升级为安全的 HTTPS 请求。通常用于支持 HTTPS 的网站。User-Agent
标识客户端(浏览器)的类型和版本。这里是:- 浏览器:Microsoft Edge (基于 Chromium)。
- 操作系统:Windows 10 (64 位)。
- 渲染引擎:AppleWebKit/537.36 (类似于 Chrome 和 Safari)。
Accept
指定客户端能够接收的 MIME 类型。这里是:text/html
:HTML 文档。application/xhtml+xml
:XHTML 文档。image/webp
:WebP 格式的图片。*/*
:表示可以接收任何类型的资源。q=0.9
:优先级权重,值越高优先级越高。
Accept-Encoding: gzip, deflate
指定客户端支持的压缩算法。服务器可以使用这些算法压缩响应体以节省带宽。Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
指定客户端优先接收的语言。这里是:- 首选中文(简体中文
zh-CN
,权重 0.9)。 - 其次是英文(
en
,权重 0.8)。
- 首选中文(简体中文
HTTP 响应部分
HTTP/1.1 200 OK
Via: 1.1 10.30.6.41 (Skyhigh Secure Web Gateway 12.2.11.49886)
Date: Sat, 22 Feb 2025 05:51:46 GMT
ETag: "84238dfc8092e5d9c0dac8ef93371a07:1736799080.121134"
X-Cache: MISS from 10.30.6.41
Content-Type: text/html
Accept-Ranges: bytes
Cache-Control: max-age=2520
Last-Modified: Mon, 13 Jan 2025 20:11:20 GMT
Proxy-Connection: Keep-Alive
Transfer-Encoding: chunked
1. 状态行
HTTP/1.1 200 OK
- HTTP/1.1:使用的 HTTP 协议版本。
- 200 OK:状态码和状态消息,表示请求成功。
2. 响应头
Via: 1.1 10.30.6.41 (Skyhigh Secure Web Gateway 12.2.11.49886)
表示请求经过了代理服务器(10.30.6.41
),代理服务器使用的是 Skyhigh Secure Web Gateway。Date: Sat, 22 Feb 2025 05:51:46 GMT
服务器生成响应的日期和时间。ETag: “84238dfc8092e5d9c0dac8ef93371a07:1736799080.121134”
资源的唯一标识符(实体标签),用于缓存验证。如果资源内容发生变化,ETag 也会变化。X-Cache: MISS from 10.30.6.41
表示缓存未命中(MISS),即代理服务器未缓存此资源,需要从源服务器获取。Content-Type: text/html
响应体的 MIME 类型,表示返回的是 HTML 文档。Accept-Ranges: bytes
表示服务器支持范围请求(Range Requests),客户端可以请求资源的某一部分。Cache-Control: max-age=2520
指示客户端可以缓存此资源的时间(2520 秒,即 42 分钟)。Last-Modified: Mon, 13 Jan 2025 20:11:20 GMT
资源最后修改的时间,用于缓存验证。Proxy-Connection: Keep-Alive
指示代理服务器保持持久连接。Transfer-Encoding: chunked
表示响应体使用分块传输编码(Chunked Transfer Encoding),适用于动态生成的内容或未知大小的内容。
响应体部分
<!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>
1. HTML 文档结构
<!doctype html>
:声明文档类型为 HTML5。<html>
:HTML 文档的根元素。<head>
:包含文档的元数据,如标题、字符集、样式表等。<body>
:包含文档的主体内容。
2. 元数据
<title>
:页面标题,显示在浏览器标签页上。<meta charset="utf-8">
:指定文档使用 UTF-8 字符编码。<meta name="viewport">
:控制页面在移动设备上的显示方式。
3. 样式表
- 使用
<style>
标签定义了一些 CSS 样式,用于设置页面的背景、字体、布局等。
4. 页面内容
- 页面包含一个
<div>
,其中有一个标题<h1>
和两段文字<p>
。 - 包含一个指向
https://www.iana.org/domains/example
的链接。
总结
- 请求:客户端通过 HTTP/1.1 协议请求
http://example.com/
的资源,并携带了浏览器信息、支持的压缩算法和语言偏好等。 - 响应:服务器返回状态码
200 OK
,表示请求成功,并返回了一个 HTML 文档。响应头中包含了缓存控制、内容类型、资源标识等信息。 - 响应体:返回的 HTML 文档是一个简单的示例页面,包含标题、段落和一个链接。
通过分析这个 HTTP 请求和响应,可以深入了解 HTTP 协议的工作原理以及客户端和服务器的交互过程。