文章目录
实验环境:
1、请求报文

1.1 请求行
请求行的格式如图所示:

1.1.1 请求方法
| 方法 | 说明 | 支持的 HTTP 协议版本 |
|---|---|---|
| GET | 获取资源 | 1.0、 1.1 |
| POST | 传输实体主体 | 1.0、 1.1 |
| PUT | 传输文件 | 1.0、 1.1 |
| HEAD | 获得报文首部 | 1.0、 1.1 |
| DELETE | 删除文件 | 1.0、 1.1 |
| OPTIONS | 询问支持的方法 | 1.1 |
| TRACE | 追踪路径 | 1.1 |
| CONNECT | 要求用隧道协议连接代理 | 1.1 |
| LINK | 建立和资源之间的联系 | 1.0 |
| UNLINE | 断开连接关系 | 1.0 |
GET:特定浏览器和服务器对URL长度有限制,例如 IE对URL长度的限制是2083字节(2K+35)。对于其他浏览器,如Netscape、FireFox等,理论上没有长度限制,其限制取决于操作系 统的支持。
因此对于GET提交时,传输数据就会受到URL长度的 限制。
POST:由于不是通过URL传值,理论上数据不受 限。但实际各个WEB服务器会规定对post提交数据大小进行限制,Apache、IIS6都有各自的配置。
- GET提交的数据会在地址栏中显示出来,而POST提交,地址栏不会改变,
1.1.2 请求资源
比如 : /index.html, “/” 会打开默认的网页,一般为index.htm 或者 index.html
1.1.3 请求协议
比如:HTTP/1.1 HTTP 协议 1.1 版本
1.2 请求首部
从客户端向服务器端发送请求报文时使用的首部。 补充了请求的附加内容、 客户端信息、 响应内容相关优先级等信息。
| 请求首部字段名 | 说明 |
|---|---|
| Accept | 用户代理可处理的媒体类型 |
| Accept-Charset | 优先的字符集 |
| Accept-Encoding | 优先的内容编码 |
| Accept-Language | 优先的语言(自然语言) |
| Authorization | Web认证信息 |
| Expect | 期待服务器的特定行为 |
| From | 用户的电子邮箱地址 |
| Host | 请求资源所在服务器 |
| If-Match | 比较实体标记(ETag) |
| If-Modified-Since | 比较资源的更新时间 |
| If-None-Match | 比较实体标记(与 If-Match 相反) |
| If-Range | 资源未更新时发送实体 Byte 的范围请求 |
| If-Unmodified-Since | 比较资源的更新时间(与If-Modified-Since相反) |
| Max-Forwards | 最大传输逐跳数 |
| Proxy-Authorization | 代理服务器要求客户端的认证信息 |
| Range | 实体的字节范围请求 |
| Referer | 对请求中 URI 的原始获取方 |
| TE | 传输编码的优先级 |
| User-Agent | HTTP 客户端程序的信息 |
1.3 通用首部字段
这是请求报文和响应报文两方都会使用的首部。
| 通用首部字段名 | 说明 |
|---|---|
| Cache-Control | 控制缓存的行为 |
| Connection | 逐跳首部、 连接的管理 |
| Date | 创建报文的日期时间 |
| Pragma | 报文指令 |
| Trailer | 报文末端的首部一览 |
| Transfer-Encoding | 指定报文主体的传输编码方式 |
| Upgrade | 升级为其他协议 |
| Via | 代理服务器的相关信息 |
| Warning | 错误通知 |
1.4 实体首部
| 实体首部字段名 | 说明 |
|---|---|
| Allow | 资源可支持的HTTP方法 |
| Content-Encoding | 实体主体适用的编码方式 |
| Content-Language | 实体主体的自然语言 |
| Content-Length | 实体主体的大小(单位: 字节) |
| Content-Location | 替代对应资源的URI |
| Content-MD5 | 实体主体的报文摘要 |
| Content-Range | 实体主体的位置范围 |
| Content-Type | 实体主体的媒体类型 |
| Expires | 实体主体过期的日期时间 |
| Last-Modified | 资源的最后修改日期时间 |
2、试验
使用apache 服务器 和 telnet 并使用请求报文来模拟访问http服务器。
其他服务器,可能telnet 需要输入额外的命令:set localecho 或者 set crlf 等。
2.1 架设http服务器
详见开头的链接,故略
2.2 win10 安装telnet
可百度
2.3 GET 请求
1)链接 http 服务器
telnet 127.0.0.1 80
- 打开回显模式
输入 CTRL + ] 并回车
3) 输入GET请求
GET /index.html HTTP/1.1
Host:127.0.0.1
4)返回报文
HTTP/1.1 200 OK
Date: Sun, 30 May 2021 10:43:02 GMT
Server: Apache/2.4.48 (Win64)
Last-Modified: Mon, 11 Jun 2007 18:53:14 GMT
ETag: "2d-432a5e4a73a80"
Accept-Ranges: bytes
Content-Length: 45
Content-Type: text/html
<html><body><h1>It works!</h1></body></html>
5)截图
- GET 请求:

- HEAD 请求:

本文详细介绍了HTTP请求报文的结构,包括请求行、请求首部、通用首部字段和实体首部。重点讲解了GET和POST两种请求方法的差异,GET用于获取资源,受URL长度限制;POST可传输大量数据,不受URL长度限制。还提供了通过Apache服务器和telnet模拟HTTP请求的实验步骤。
469

被折叠的 条评论
为什么被折叠?



