HTTP 请求结构
1. 请求行组成
请求行由三部分构成:请求方法、请求目标(URI)和协议版本,各部分之间以空格分隔。
GET /index.html HTTP/1.1
常用请求方法
| 方法 | 说明 | 支持的 HTTP 版本 |
|---|---|---|
| GET | 获取资源 | 1.0, 1.1 |
| POST | 传输实体主体 | 1.0, 1.1 |
| PUT | 传输文件 | 1.0, 1.1 |
| DELETE | 删除文件 | 1.0, 1.1 |
| HEAD | 获取报文首部 | 1.0, 1.1 |
| OPTIONS | 询问支持的方法 | 1.1 |
| TRACE | 追踪路径 | 1.1 |
| CONNECT | 要求用隧道协议连接代理 | 1.1 |
GET 方法
GET 是最常用的 HTTP 方法,常用于获取服务器上的某个资源。其特点是首行第一部分为 GET,URL 的查询字符串可以为空也可以不为空,Header 部分包含若干键值对,Body 部分一般没有,正文数据通常包含在 URL 的查询字符串中。
POST 方法
POST 方法常用于提交用户输入的数据给服务器,例如登录页面。可以通过 HTML 中的 form 标签构造,或者使用 JavaScript 的 Ajax 实现。
注意: POST 请求的首行第一部分为 POST,URL 的查询字符串一般为空,但 Header 和 Body 部分通常不为空。Body 内的数据格式通过 Header 中的 Content-Type 指定,长度由 Content-Length 指定。
GET 与 POST 的区别
- 语义不同:GET 一般是获取数据,POST 一般是提交数据。
- 携带数据的方式不同:GET 的数据通过 query string 传递,POST 的数据通过 body 传递。
- 幂等性:GET 请求建议是幂等的(多次请求结果一致),因此结构可被缓存;POST 则不具备此特性。
- 实际使用:虽然规范有区分,但在实际开发中两者常被混用,需根据具体场景选择。
2. URL 组成
URL 的标准格式为:协议名称 : // 主机地址或域名 / 端口号 / 路径 ? 查询字符串 # 片段标识符。

成分解析
- 协议名称:使用的协议,如 http 或 https。
- 主机地址:确定服务器,IP 和域名的转换通过 DNS 完成。
- 端口号:确定程序服务,未写时 HTTP 默认为 80,HTTPS 默认为 443。













