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.6HTTP/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 thisdomain 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 thisdomain 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 协议的工作原理以及客户端和服务器的交互过程。