Administrator
Published on 2025-03-11 / 7 Visits
0
0

HTTP 请求都包含什么内容?

HTTP 请求由 请求行(Request Line)请求头(Request Headers)请求体(Request Body) 三部分组成。以下是详细解析:


一、HTTP 请求组成

  1. 请求行(Request Line)

    • 格式:[方法] [URI] [协议版本]
      示例:GET /api/data HTTP/1.1
    • 方法GET, POST, PUT, DELETE, HEAD, OPTIONS 等。
    • URI:资源路径(如 /index.html 或带参数的 /search?q=foo)。
    • 协议版本HTTP/1.1HTTP/2
  2. 请求头(Request Headers)

    • 描述客户端环境、请求属性或附加要求。
    • 格式:Header-Name: Value,每行一个键值对。
  3. 请求体(Request Body)

    • 仅出现在 POSTPUTPATCH 等方法中(GET 通常无请求体)。
    • 用于传输表单数据、文件或 JSON 等结构化数据。

二、常见请求头类型

通用请求头(General Headers)

请求头作用
Host目标服务器域名(HTTP/1.1 必须字段)
User-Agent客户端标识(浏览器、操作系统、设备信息)
Connection控制连接行为(如 keep-alive 保持长连接)
Cache-Control缓存策略(如 no-cachemax-age=3600

请求控制头(Request Control Headers)

请求头作用
Accept声明客户端支持的响应内容类型(如 text/html, application/json
Accept-Encoding支持的压缩算法(如 gzip, deflate
Accept-Language语言偏好(如 en-US, zh-CN
Authorization认证凭证(如 Bearer <token>Basic <base64>
Cookie发送服务器设置的 Cookie

内容描述头(Content Headers)

请求头作用
Content-Type请求体的数据类型(如 application/json
Content-Length请求体字节数(二进制数据必须指定)
Content-Encoding请求体压缩方式(如 gzip

其他功能头

请求头作用
Referer请求来源页面 URL
Origin跨域请求的源站(用于 CORS 校验)
If-Modified-Since条件请求:仅当资源修改后才返回数据

三、请求体(Body)类型

请求体的格式由 Content-Type 头决定,常见类型如下:

1. 表单数据

  • application/x-www-form-urlencoded
    默认表单格式,数据编码为键值对:
    key1=value1&key2=value2
    
  • multipart/form-data
    用于文件上传,数据分块传输:
    Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryABC123
    

2. 结构化数据

  • application/json
    传输 JSON 数据:
    { "name": "Alice", "age": 30 }
    
  • application/xml
    传输 XML 数据:
    <user><name>Alice</name><age>30</age></user>
    

3. 二进制数据

  • application/octet-stream
    通用二进制流(如文件下载)。
  • image/pngvideo/mp4
    特定类型的二进制文件。

4. 其他类型

  • text/plain
    纯文本数据(非结构化)。
  • application/graphql
    GraphQL 查询语句。

四、完整 HTTP 请求示例

POST /api/login HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0
Content-Type: application/json
Content-Length: 45
Authorization: Bearer abc123

{
  "username": "alice",
  "password": "secret"
}

五、关键注意事项

  1. GET 请求的查询参数
    GET 方法通过 URL 的 ?key=value 传递参数,而非请求体。
  2. Content-Type 必须匹配
    服务器根据 Content-Type 解析请求体,类型错误会导致解析失败。
  3. 安全头控制
    敏感操作需配合 AuthorizationCSRF-Token 等安全头。
  4. 跨域请求限制
    跨域请求需服务器支持 CORS,客户端需设置 Origin 头。

掌握这些内容可帮助开发者调试 API、优化请求性能并避免常见错误。


Comment