
1. HTTP状态码概述HTTP状态码是服务器对客户端请求的响应标识用于表示请求的处理结果。这些三位数字代码由RFC 2616定义并在RFC 7231中更新。状态码的第一个数字定义了响应类别后两位数字没有分类作用仅用于区分具体状态。提示状态码虽然标准化但不同服务器实现可能存在细微差异。实际开发中应结合具体场景理解状态码含义。2. 状态码分类体系2.1 信息类响应(100-199)这类状态码表示请求已被接收需要继续处理。常见的有100 Continue服务器已收到请求头客户端应继续发送请求体101 Switching Protocols服务器同意切换协议如升级到WebSocket102 Processing服务器已接收并正在处理请求但尚无响应可用103 Early Hints用于预加载资源与Link头部配合使用2.2 成功响应(200-299)表示请求已成功被服务器接收、理解并接受200 OK标准成功响应GET请求返回资源POST返回操作结果201 Created资源创建成功常见于POST/PUT请求202 Accepted请求已接受但尚未处理完成204 No Content服务器成功处理但无内容返回206 Partial Content响应部分内容用于断点续传2.3 重定向响应(300-399)需要客户端执行进一步操作才能完成请求301 Moved Permanently资源永久重定向302 Found资源临时重定向304 Not Modified资源未修改缓存有效307 Temporary Redirect临时重定向且保持请求方法308 Permanent Redirect永久重定向且保持请求方法2.4 客户端错误(400-499)表示客户端请求存在问题400 Bad Request请求语法错误401 Unauthorized需要身份验证403 Forbidden服务器拒绝请求404 Not Found资源不存在429 Too Many Requests请求过于频繁2.5 服务器错误(500-599)服务器处理请求时发生错误500 Internal Server Error服务器内部错误502 Bad Gateway网关或代理服务器收到无效响应503 Service Unavailable服务不可用维护或过载504 Gateway Timeout网关超时3. 14个核心状态码详解3.1 200 OK标准成功响应响应体包含请求的资源。GET请求返回资源表示HEAD请求返回资源元数据PUT/POST返回操作结果。典型场景网页正常加载API调用成功返回数据文件下载成功3.2 301 Moved Permanently资源已永久移动到新位置客户端应更新书签。搜索引擎会转移权重到新URL。响应必须包含Location头HTTP/1.1 301 Moved Permanently Location: https://new.example.com/resource3.3 302 Found资源临时移动到不同位置客户端应继续使用原URL发起请求。常用于临时维护页面跳转。3.4 304 Not Modified资源未修改客户端可使用缓存版本。服务器通过比较If-Modified-Since或If-None-Match头部判断。3.5 400 Bad Request服务器无法理解请求通常因为语法错误如JSON格式错误无效请求参数请求体过大3.6 401 Unauthorized需要身份验证。响应应包含WWW-Authenticate头说明认证方式HTTP/1.1 401 Unauthorized WWW-Authenticate: Basic realmAccess to staging site3.7 403 Forbidden服务器理解请求但拒绝执行可能原因权限不足IP被禁止访问时间限制3.8 404 Not Found资源不存在。注意与403的区别404表示服务器不知道资源是否存在可能故意返回。3.9 405 Method Not Allowed请求方法不被支持。响应应包含Allow头列出允许的方法HTTP/1.1 405 Method Not Allowed Allow: GET, HEAD3.10 429 Too Many Requests请求频率超出限制。应包含Retry-After头提示重试时间HTTP/1.1 429 Too Many Requests Retry-After: 36003.11 500 Internal Server Error通用服务器错误通常需要检查服务器日志定位具体问题。3.12 502 Bad Gateway网关服务器从上游服务器收到无效响应。常见于后端服务崩溃网络连接问题请求超时3.13 503 Service Unavailable服务暂时不可用通常因为服务器维护过载保护计划内停机3.14 504 Gateway Timeout网关服务器等待上游服务器响应超时。与502的区别在于504明确是超时导致。4. 状态码使用实践4.1 REST API设计规范良好设计的API应GET返回200成功或404不存在POST返回201创建成功或400参数错误PUT返回200更新成功或204无内容更新DELETE返回204成功删除4.2 缓存控制策略利用状态码优化缓存对静态资源使用304减少传输设置Cache-Control头部配合200状态码对API响应谨慎使用缓存相关状态码4.3 错误处理最佳实践前端应处理常见错误状态码日志系统应记录非2xx状态请求监控系统应报警持续出现的5xx错误5. 疑难问题排查5.1 502错误常见原因后端服务崩溃检查服务进程状态请求超时调整网关超时设置协议不匹配确保前后端使用相同HTTP版本请求头过大优化或拆分请求头5.2 403与404选择安全考虑对未授权用户返回404隐藏资源存在性对已授权但无权限用户返回4035.3 状态码不一致问题可能原因中间件修改了状态码负载均衡配置错误客户端缓存了旧响应排查方法检查原始服务器日志使用curl直接测试后端服务检查CDN和代理配置6. 高级话题6.1 自定义状态码虽然可以定义非标准状态码如599但应谨慎使用。更好的做法是使用标准状态码在响应体中提供详细错误信息使用自定义错误码字段6.2 HTTP/2与状态码HTTP/2没有改变状态码体系但优化了传输效率。注意头部压缩减少重复状态码传输多路复用可能影响状态码监控服务器推送不使用特殊状态码6.3 状态码与SEO搜索引擎特别关注301权重转移404从索引中移除503临时不抓取最佳实践避免过多302影响排名正确使用404清理死链维护期使用503而非500