步步糕升 发表于 7 天前

一文读懂 HTTP 响应状态码:网页、接口调试必备的服务器 “反馈暗号”

<h1><br></h1><h2>导语</h2><div class="quote"><blockquote><p><font size="4">访问网页、调用后端 API 接口的时候,浏览器、网络工具都会收到服务器返回的<strong>HTTP 状态码</strong>,一组三位数字,代表服务器对本次请求的处理结果MDN Web Do...。
看到<code>200</code>代表一切顺利;遇到<code>404</code>知道页面找不到;碰到<code>500</code>代表服务器炸了。很多新手调试接口、排查网页故障,看不懂状态码,就很难定位问题根源。</font></p><p><font size="4">HTTP 状态码分为五大类别,第一位数字就确定大类:1xx 信息、2xx 成功、3xx 重定向、4xx 客户端错误、5xx 服务端错误。本文整理开发调试最常用的状态码,讲清含义、业务场景,同时给出简单排错思路,适合前端、后端、测试、运维人员查阅。</font></p><blockquote>
<p><font size="4">提示:本文为网络技术科普,参考 MDN、RFC 官方 HTTP 规范文档整理MDN Web Do...。</font></p></blockquote></blockquote></div><p><br></p><blockquote>
</blockquote><h2>一、五大类状态码总览</h2>








































<p>表格</p><table><thead><tr><th>分类</th><th>区间</th><th>核心含义</th><th>简单说明</th></tr></thead><tbody><tr><td>1xx 信息响应</td><td>100‑199</td><td>请求已收到,请客户端继续传输</td><td>较少见,多用于大文件上传、协议升级</td></tr><tr><td>2xx 成功响应</td><td>200‑299</td><td>服务器成功完成本次请求</td><td>接口、网页访问正常返回数据</td></tr><tr><td>3xx 重定向</td><td>300‑399</td><td>需要跳转,完成后续访问操作</td><td>网页迁移、缓存复用场景</td></tr><tr><td>4xx 客户端错误</td><td>400‑499</td><td>客户端请求存在问题,服务器拒绝处理</td><td>参数错误、无权限、地址错误,问题出在请求方</td></tr><tr><td>5xx 服务端错误</td><td>500‑599</td><td>服务器内部发生故障</td><td>代码异常、网关故障、服务过载,问题出在服务提供方</td></tr></tbody></table><h2>二、高频状态码详细解析</h2><h3>2xx 请求成功类</h3><ol>
<li><strong>200 OK</strong>
请求处理成功。GET 获取页面 / 接口数据、普通 POST 提交数据最常见。<strong>注意:200 只是 HTTP 层面通信成功,业务逻辑依然可以在返回 JSON 里面标记业务失败</strong>。</li>
<li><strong>201 Created</strong>
资源创建成功。常用于 POST 新建用户、新建订单、上传文件,响应头<code>Location</code>会带上新创建资源的访问地址。</li>
<li><strong>204 No Content</strong>
请求成功,<strong>但是不返回任何响应体</strong>。常用于删除接口、部分更新接口,浏览器 / 客户端不需要渲染新页面,只需要知道操作完成即可MDN Web Do...。</li>
</ol><h3>3xx 重定向、缓存跳转类</h3><ol>
<li><strong>301 Moved Permanently 永久重定向</strong>
资源永久迁移到新 URL,浏览器后续请求直接访问新地址;搜索引擎会更新收录地址。适合域名改版、旧地址永久废弃场景。</li>
<li><strong>302 Found 临时重定向</strong>
临时跳转,旧地址未来可能恢复。登录跳转、活动页临时跳转大量使用,搜索引擎保留旧 URL 索引。</li>
<li><strong>304 Not Modified 资源未修改</strong>
缓存命中。服务器对比客户端携带的缓存标识 ETag / 修改时间,判断资源没有更新,不需要重复下发内容,客户端直接使用本地浏览器缓存,节省带宽,提升网页加载速度。</li>
</ol><h3>4xx 客户端错误:问题出在请求这一边</h3><ol>
<li><strong>400 Bad Request 请求错误</strong>
请求格式错误,JSON 格式非法、参数格式不对,服务器读不懂你的请求报文。排错重点:检查请求 body、参数、JSON 语法。</li>
<li><strong>401 Unauthorized 未认证</strong>
没有登录,缺少身份凭证。需要带上 token、cookie 完成身份认证之后再访问接口。</li>
<li><strong>403 Forbidden 禁止访问</strong>
身份认证成功,但是账号没有权限访问该资源。登录了,但没有操作权限,和 401 “没登录” 有本质区别。</li>
<li><strong>404 Not Found 资源不存在</strong>
访问的 URL 地址不存在,地址拼写错误、资源已经被删除。网页最经典错误码。</li>
<li><strong>405 Method Not Allowed 请求方法不允许</strong>
接口不支持当前 HTTP 方法。比如接口只接受 POST,你用 GET 去调用,就返回 405。排错:核对 GET/POST/PUT/DELETE 请求方式。</li>
<li><strong>409 Conflict 资源冲突</strong>
资源状态发生冲突。例如重复创建同一个账号,数据库唯一键冲突。</li>
<li><strong>413 Payload Too Large 请求体过大</strong>
上传文件、提交表单的数据体积超过服务器限制,调大服务器请求大小限制,或者拆分上传文件。</li>
<li><strong>415 Unsupported Media Type 媒体类型不支持</strong><code>Content‑Type</code>请求头不对,例如接口需要 application/json,但是你传了 form 表单格式。</li>
<li><strong>422 Unprocessable Entity 业务语义校验失败</strong>
HTTP 报文格式没问题,但是业务字段校验不通过。例如手机号格式错误、参数范围非法,属于业务层面校验报错。</li>
<li><strong>429 Too Many Requests 请求过于频繁</strong>
触发服务器限流。短时间接口调用次数超限,需要降低请求频率,等待冷却时间再重试。</li>
</ol><h3>5xx 服务端错误:问题出在服务器 / 网关</h3><ol>
<li><strong>500 Internal Server Error 服务器内部错误</strong>
服务器代码异常、数据库报错、程序 BUG。客户端请求格式没问题,是服务端程序出故障,普通用户只能反馈给后端开发排查问题。</li>
<li><strong>502 Bad Gateway 网关错误</strong>
反向代理 / 网关拿到后端业务服务返回的无效、空响应。后端服务崩溃、进程挂掉经常返回 502。</li>
<li><strong>503 Service Unavailable 服务不可用</strong>
服务暂时无法处理请求,常见于服务器过载、维护停机。属于临时状态,过段时间重试有可能恢复。</li>
<li><strong>504 Gateway Timeout 网关超时</strong>
网关向后端服务发起请求,但是后端长时间没有返回结果。接口执行逻辑过慢、数据库查询卡死会出现 504。</li>
</ol><h2>三、调试排错快速小技巧</h2><ol>
<li>看到<strong>4xx 系列</strong>:优先自查我方请求,核对 URL、请求方法、请求头 token、参数格式、请求体 JSON、Content‑Type,问题基本出在客户端请求。</li>
<li>看到<strong>5xx 系列</strong>:请求本身格式没问题,故障属于服务端,反馈给服务提供方排查;503 可以等待重试;504 代表接口执行超时。</li>
<li>200 不等于业务成功!HTTP 状态码只代表网络通信成功,API 接口一定要解析返回 JSON 里面的业务 code,判断业务是否执行成功。</li>
<li>304 不代表出错,是正常缓存命中,可以减少网络流量消耗。</li>
</ol><h2>四、常见认知误区澄清</h2><ol>
<li><strong>误区:404 一定是服务器把文件删了。</strong>
纠正:也有可能是 URL 拼写错误、路由配置错误,先核对访问地址。</li>
<li><strong>误区:401 和 403 是一回事,都是没有权限。</strong>
纠正:401 = 你还没有登录;403 = 登录成功,但你没有访问这个资源的权限。</li>
<li><strong>误区:返回 200 OK,就代表接口业务逻辑执行成功。</strong>
纠正:HTTP 状态只管传输层通信,业务失败完全可以包装在 200 的 JSON 响应体内。</li>
<li><strong>误区:502、504 都是我的本地网络问题。</strong>
纠正:绝大多数场景是后端服务、网关故障;可以换网络验证,排除本地网络问题。</li>
<li><strong>误区:301 和 302 效果完全一样,可以随便混用。</strong>
纠正:301 永久跳转,搜索引擎更新索引;302 临时跳转,二者缓存、SEO 行为不同,不能随意互换。</li>
</ol><h2>文末总结</h2><p>HTTP 状态码就是服务器返回的一套标准化 “反馈暗号”。第一位数字就可以快速定位故障大类:
2xx = 成功;3xx = 跳转缓存;4xx = 客户端请求有问题;5xx = 服务器侧故障。</p><p>开发调试网页、对接 API 接口的时候,优先看状态码,能够快速缩小问题范围,减少盲目排查。但要记住:<strong>200 仅代表 HTTP 通信成功,业务是否成功,还需要看接口返回的业务字段。</strong></p><p></p>
页: [1]
查看完整版本: 一文读懂 HTTP 响应状态码:网页、接口调试必备的服务器 “反馈暗号”