HTTP请求/响应的结构是怎么样的

63 阅读1分钟

HTTP(Hypertext Transfer Protocol)是一种用于传输超文本的协议,它定义了客户端和服务器之间进行通信的规范。HTTP 请求和响应的结构主要包括三个部分:起始行(Start Line)、头部(Headers)和消息体(Message Body)。

HTTP 请求结构:

  1. 起始行(Start Line):

    • 包含请求方法、请求的URI(Uniform Resource Identifier)和协议版本。
    bashCopy code
    GET /example/index.html HTTP/1.1
    
  2. 头部(Headers):

    • 包含多个键值对,每个键值对占一行,用来传递额外的信息,如用户代理、主机信息、内容类型等。
    Host: www.example.com
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3
    
  3. 空行:

    • 用于分隔头部和消息体。
    (空行)
    
  4. 消息体(Message Body):

    • 包含请求的数据,对于 GET 请求通常为空,而对于 POST 请求等包含用户提交的表单数据、JSON 数据等。
    key1=value1&key2=value2
    

HTTP 响应结构:

  1. 起始行(Start Line):

    • 包含协议版本、状态码和状态消息。
    HTTP/1.1 200 OK
    
  2. 头部(Headers):

    • 与请求头部类似,包含服务器信息、内容类型、响应时间等。
    Content-Type: text/html; charset=utf-8
    Server: Apache
    
  3. 空行:

    • 用于分隔头部和消息体。
    (空行)
    
  4. 消息体(Message Body):

    • 包含响应的实际数据,可以是 HTML 页面、JSON 数据等。
    <!DOCTYPE html>
    <html>
    <head>
        <title>Example Page</title>
    </head>
    <body>
        <h1>Hello, World!</h1>
    </body>
    </html>
    

这是一个简化的描述,实际上 HTTP 请求和响应的结构可能更加复杂,特别是在处理文件上传、压缩、分块传输等场景时。但上述描述涵盖了 HTTP 最基本的结构。