Skip to content

HTTP 协议详解与状态码头信息指南

本文全面系统地梳理 HTTP 协议的交互模型、版本演进、请求与响应报文结构、常用 HTTP 状态码及核心 Headers 头信息的作用。

1. HTTP 协议概述

HTTP (HyperText Transfer Protocol,超文本传输协议) 规定了客户端(如浏览器)与 Web 服务器之间数据传输的格式和通信规则。

HTTP 协议版本演化

  • HTTP/1.0:短连接模式。客户端与服务器建立 TCP 连接 -> 发送请求 -> 接收响应 -> 立即断开连接。每次请求都需要重新建立连接。
  • HTTP/1.1(主流扩展):保持连接(Keep-Alive/长连接)。客户端与服务器建立连接后可复用 TCP 连接进行多次请求与响应,若超过超时时间无新请求则自动关闭。

2. HTTP 请求报文结构

HTTP 请求报文由 请求行 (Request Line)请求头 (Request Headers)空行请求体 (Request Body) 四部分组成:

http
POST /login HTTP/1.1
Host: localhost:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Accept: text/html,application/json
Referer: http://localhost:8080/index.html
If-Modified-Since: Tue, 11 Jul 2026 18:23:51 GMT
Content-Type: application/x-www-form-urlencoded

username=admin&password=123

2.1 请求行

格式:请求方式 资源路径 协议版本

  • 请求方式:主要包括 GETPOST
    • GET:参数直接拼接在 URL 后面,长度受限,适合查询操作,不安全。
    • POST:参数封装在请求体中,无长度限制,适合提交数据/修改操作,安全性相对更高。

2.2 核心请求头信息

请求头 (Header)说明与应用场景
Host指定目标服务器的主机名与端口号(如 www.example.com:80)。
Referer记录当前请求的来源页面 URL。常用于站点防盗链访问来源统计分析
User-Agent包含客户端浏览器类型、操作系统及版本信息,服务端可据此做设备适配。
If-Modified-Since记录上一次获取资源时服务器返回的修改时间。与响应头 Last-Modified 及状态码 304 配合实现浏览器本地缓存控制
Accept告知服务器客户端能够接收并处理的媒体类型(如 text/html, image/*)。
Accept-Encoding告知服务器客户端支持的压缩算法(如 gzip, deflate, br)。

3. HTTP 响应报文结构

HTTP 响应报文由 响应行 (Status Line)响应头 (Response Headers)空行响应体 (Response Body) 组成:

http
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=UTF-8
Content-Length: 1024
Set-Cookie: JSESSIONID=ABC123XYZ

<html><body><h1>Hello World</h1></body></html>

3.1 状态码 (Status Codes) 详解

响应行包含 HTTP 状态码,用以标识服务器处理请求的结果状态:

状态码含义解释与案例
200 OK请求成功服务器已成功处理请求,并正常返回请求的资源数据。
302 Found临时重定向请求的资源已被临时移动。配合响应头 Location 指引客户端重定向访问新地址。
304 Not Modified资源未修改服务器端资源自上次请求后未发生任何改动,通知客户端直接从本地缓存中读取数据。
404 Not Found资源不存在客户端请求的 URL 路径在服务器端未找到对应文件或资源。
500 Internal Error服务器内部错误服务器内部代码执行报错(如 Java 抛出未捕获异常 NullPointerException10 / 0 除零异常)。

3.2 核心响应头信息

响应头 (Header)说明与应用场景
Location重定向的目标 URL 地址。配合状态码 302 使用,实现页面自动跳转。
Refresh定时刷新/跳转。设置格式如 Refresh: 3; url=http://example.com(3秒后自动跳转)。
Content-Type告知客户端响应内容的 MIME 类型及字符集(如 text/html;charset=UTF-8)。
Content-Disposition控制浏览器对响应内容的处理方式。触发文件下载时设置为:attachment; filename=demo.zip
Last-Modified资源的最后修改时间,配合 If-Modified-Since 与 304 状态码完成缓存判定。
禁用缓存三件套Expires: -1
Cache-Control: no-cache
Pragma: no-cache
用于强制浏览器每次都向服务器重新请求最新资源。

基于 VitePress 构建 | 技术知识库