文档首页> Linux命令> 蓝易云cdn:HTTP的请求方法,body,介绍请求报头

蓝易云cdn:HTTP的请求方法,body,介绍请求报头

发布时间:2026-03-23 00:18       

HTTP请求报文结构详解:方法、报头、空行与Body 📡

每一次浏览器访问网页、APP调用接口,背后都是一次HTTP请求在工作。理解HTTP请求报文的组成结构,是网络编程和Web开发的基本功。一个完整的HTTP请求报文由四部分组成:请求行、请求报头、空行、请求体(Body)。下面逐一拆解。


一、请求行:报文的第一行 🏷️

请求行是HTTP报文的起始行,包含三个要素:请求方法、请求路径、协议版本。

GET /api/user?id=1 HTTP/1.1

解释:GET 是请求方法,表示要获取资源;/api/user?id=1 是请求的目标路径,包括查询参数;HTTP/1.1 是所使用的协议版本。这三者之间用空格分隔,行末以回车换行符(\r\n)结束。服务器拿到这一行,就知道客户端想对哪个资源做什么操作。


二、HTTP请求方法详解 🔧

HTTP协议定义了多种请求方法,每种方法代表对资源的不同操作语义:

方法 用途 是否携带Body
GET 获取资源,最常用的方法 一般不携带
POST 提交数据,常用于表单提交、创建资源 携带
PUT 整体替换目标资源 携带
DELETE 删除指定资源 一般不携带
PATCH 局部修改资源 携带
HEAD 与GET相同但只返回响应头,不返回Body 不携带
OPTIONS 查询服务器支持哪些方法(常见于CORS预检) 不携带

实际开发中用得最多的是GET和POST。两者的核心区别在于:GET通过URL传参,参数暴露在地址栏中,有长度限制;POST通过请求体传参,适合传输大量数据或敏感信息 🎯。

举个POST请求的完整示例:

POST /api/login HTTP/1.1
Host: www.example.com
Content-Type: application/json
Content-Length: 42

{"username":"admin","password":"123456"}

解释: 第一行是请求行,声明使用POST方法访问登录接口。中间若干行是请求报头,提供附加信息。空行之后是请求体,承载着JSON格式的登录数据。这四部分共同构成了一个完整的HTTP请求报文。


三、请求报头(Request Headers)📋

请求报头紧跟在请求行之后,每行一个键值对,格式为 字段名: 字段值。报头的作用是向服务器传递请求的附加信息和控制参数。

常见核心报头字段:

Host

Host: www.example.com

解释: 指定请求的目标主机名和端口号。这是HTTP/1.1中唯一一个强制必须携带的报头。在同一台服务器部署多个站点时(虚拟主机),服务器依靠Host字段来区分请求应路由到哪个站点。

Content-Type

Content-Type: application/json; charset=UTF-8

解释: 告知服务器请求体中数据的格式类型。application/json 表示JSON格式,application/x-www-form-urlencoded 表示表单编码格式,multipart/form-data 用于文件上传。服务器据此选择正确的解析方式,如果Content-Type与实际数据不匹配,解析就会失败 ⚠️。

Content-Length

Content-Length: 42

解释: 声明请求体的字节长度。服务器根据这个值来判断请求体是否接收完整。如果实际数据比声明的长度短,服务器会一直等待剩余数据;如果比声明的长,多余部分会被截断或引发错误。

Accept

Accept: application/json, text/html;q=0.9

解释: 告诉服务器客户端希望接收什么格式的响应数据。q=0.9 是权重值,表示优先级。服务器会根据这个字段进行内容协商,尽量返回客户端偏好的数据格式。

User-Agent

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)

解释: 标识客户端的类型和版本信息,包括浏览器类型、操作系统等。服务器可以据此做兼容性处理,比如对移动端和桌面端返回不同的页面布局。

Cookie

Cookie: session_id=abc123; theme=dark

解释: 将客户端保存的Cookie信息随请求发送给服务器。这是HTTP维持会话状态的主要机制。服务器通过Cookie中的会话标识来识别用户身份,实现登录保持等功能 🍪。

Authorization

Authorization: Bearer eyJhbGciOiJIUzI1NiJ9...

解释: 携带身份认证凭证。Bearer 方案常用于JWT令牌认证,服务器解析令牌来验证请求者身份和权限。与Cookie不同,这种方式更适合无状态的API认证场景。


四、空行的作用 ↩️

报头和请求体之间必须有一个空行(即单独的 \r\n),这是HTTP协议的硬性规定。

Content-Type: application/json\r\n
\r\n                              ← 这就是空行
{"username":"admin"}

解释: 空行是报头结束的标志。HTTP报文是纯文本流,服务器在解析时从上往下逐行读取报头,当遇到一个空行时,就知道报头部分到此结束,后面的内容全部属于请求体。如果缺少这个空行,服务器将无法正确分割报头和Body,导致整个请求解析失败。虽然它看起来不起眼,但在协议层面是绝对不可省略的分隔符 🧱。


五、请求体(Body)📦

请求体位于空行之后,承载着客户端要提交给服务器的实际数据。并非所有请求都有Body——GET和HEAD通常没有,POST、PUT、PATCH通常有。

常见的三种Body格式:

JSON格式(接口开发最常用)

{"name":"张三","age":25}

表单格式(传统HTML表单提交)

name=%E5%BC%A0%E4%B8%89&age=25

文件上传格式(multipart分段传输)