http web development status codes headers api caching security

HTTP 状态码与响应头完全参考指南

HTTP 状态码 (1xx-5xx) 和核心响应头的全面参考手册。学习如何调试 Web 应用,使用 Cache-Control 优化缓存,以及通过 Set-Cookie 管理会话。

2026-04-12

HTTP 状态码与响应头:完全参考指南

对于 Web 开发人员、SEO 专家和系统管理员来说,理解 HTTP 状态码和响应头是至关重要的基础知识。本参考指南涵盖了现代 Web 通信中最常用的状态码和头部信息。

1. HTTP 状态码快速查阅

状态码根据首位数字分为五类。

1xx: 信息性状态码

  • 101 Switching Protocols: 服务器同意切换协议(例如升级到 WebSocket)。

2xx: 成功状态码

  • 200 OK: 请求成功。
  • 201 Created: 请求成功且服务器创建了新的资源。
  • 204 No Content: 请求成功,但没有返回内容。

3xx: 重定向状态码

  • 301 Moved Permanently: 资源已永久移动到新 URL。
  • 302 Found: 资源临时移动到新 URL。
  • 304 Not Modified: 用于缓存;表示资源自上次请求以来未被修改。

4xx: 客户端错误状态码

  • 400 Bad Request: 语义有误,服务器无法处理该请求。
  • 401 Unauthorized: 需要身份验证。
  • 403 Forbidden: 服务器理解请求,但拒绝执行。
  • 404 Not Found: 找不到请求的资源。
  • 429 Too Many Requests: 客户端发送请求频次过高(速率限制)。

5xx: 服务器错误状态码

  • 500 Internal Server Error: 服务器遇到意外情况,无法完成请求。
  • 502 Bad Gateway: 网关或代理服务器从上游服务器接收到无效响应。
  • 503 Service Unavailable: 服务器当前无法处理请求(如维护或超载)。
  • 504 Gateway Timeout: 网关或代理服务器未能及时从上游服务器接收响应。

2. 核心 HTTP 响应头

响应头提供了关于响应或服务器的元数据。

缓存控制: Cache-Control

控制浏览器和中间缓存(如 CDN)如何存储资源。

  • public, max-age=31536000, immutable: 适用于带版本的静态资源(JS, CSS)。
  • no-store: 不缓存任何内容(适用于敏感数据)。
  • no-cache: 使用缓存前必须先向服务器确认资源是否更新。

安全: Strict-Transport-Security (HSTS)

强制浏览器仅通过 HTTPS 访问站点。

  • 示例: max-age=63072000; includeSubDomains; preload

会话管理: Set-Cookie

从服务器发送 cookie 到客户端。

  • 示例: id=abc; Max-Age=3600; Secure; HttpOnly; SameSite=Lax
    • HttpOnly: 防止 JavaScript 访问 cookie(缓解 XSS 攻击)。
    • Secure: 仅通过 HTTPS 发送 cookie。
    • SameSite: 控制跨站 cookie 行为(Lax, Strict 或 None)。

内容协商: Content-TypeAccept-Encoding

  • Content-Type: 指明资源的媒体类型(如 text/html, application/json)。
  • Accept-Encoding: 客户端告知服务器支持的压缩格式(如 gzip, br)。

3. 对比表: 301 与 302 重定向

特性 301 永久重定向 302 临时重定向
SEO 影响 传递权重 (PageRank) 不传递权重
浏览器缓存 默认会被缓存 默认不被缓存
使用场景 网站迁移、URL 永久更名 维护期间、临时促销活动

FAQ: 常见 HTTP 问题

问: 为什么我登录后还是遇到 403 Forbidden 错误?

答: 这通常是因为用户缺乏访问该资源所需的特定权限/角色,或者 CSRF 校验失败。

问: 401 和 403 有什么区别?

答: 401 Unauthorized 意味着“我不确定你是谁”(请登录)。403 Forbidden 意味着“我知道你是谁,但你没权限访问这里”。

问: 如何修复 502 Bad Gateway?

答: 这通常是服务器端问题。检查后端应用(如 Node.js, Python)是否在运行,或反向代理(Nginx/Apache)配置是否正确指向了后端。

相关工具

  • HTTP 头部解析器: 检查和分析任何 URL 的响应头。
  • Cache-Control 生成器: 为您的资源生成优化的缓存策略。
  • 状态码检查工具: 验证 API 或网站的响应代码。