HTTP 状态码
HTTP Status Code也常被叫作:状态码HTTP 状态码200 404 500返回码接口状态码
「打开网页或接口时报的那些三位数字(404、500),是服务器在告诉你这次请求是成了还是哪里出了问题。」
HTTP 状态码 HTTP Status Code
服务器用三位数字报信:2 开头成功、4 开头是你这边的问题、5 开头是服务器自己的问题。
你向服务器喊一嗓子(发请求),状态码就是服务器回话的第一句。按百位数字分三档:2 开头是成功(200 = 找到了、正常返回);4 开头是「你这边的问题」——404 你要的东西不存在、401 你没登录、403 登录了但没权限、400 你发的格式不对;5 开头是「服务器自己的问题」——500 服务器内部出错、503 它忙不过来或在维护。记住这个分档比背数字有用:看到 4 开头先检查你发的请求,看到 5 开头是服务器的事,别在前端代码里瞎找。
你日常最常撞见的是 200(成功)、404(找不到页面或内容)、500(服务器出错)。另外几个常见但容易弄混的:301/302 是「页面搬家了,浏览器自动跟着跳」;401 是「先登录」;403 是「登录了也不许看」;503 是「暂时歇业,一会儿再来」。状态码不光是程序员的事:404 页面是不是友好、500 是不是兜底成一句人话而不是白屏,直接决定用户撞上错误时的感受。
你不写代码也能亲眼看到真实状态码:浏览器按 F12 打开开发者工具,切到「网络」面板,刷新页面,每个请求后面都标着状态码。AI 说「错误已处理」,你就来这儿看。还要留个心眼:有些接口即使逻辑失败也返回 200,把错误藏在返回内容里——只看状态码不看返回体,会被骗。
长什么样 真实可交互,不是截图
GET https://mickerbook.com/reference/button → 200 OK 这次请求成功,内容返回了 GET https://mickerbook.com/reference/no-such-page → 404 Not Found 你要的内容不存在(不是服务器坏了) GET https://example.com/api/users → 500 Internal Server Error 服务器自己出错了
状态码按百位分三档看:2 开头成功、4 开头检查你自己的请求、5 开头是服务器的事。这个分法比背每个数字更有用。
拆开看,里面有这几块
-
1
百位分类 Category digit
第一位数字是总分类:2 成功、3 重定向、4 请求方的问题、5 服务器的问题,后两位是具体原因。
-
2
状态码本身 Code
三位数字,如 200、404、500。浏览器网络面板里每个请求都会标一个,是能亲眼看到的事实。
-
3
响应内容 Response body
状态码只是结论,具体数据或错误说明在返回内容里。有些接口逻辑失败也返回 200,错误藏在内容里,只看状态码会漏。
常见的有哪几种
请求被接收并处理了,200 最常见。
用在:页面加载成功、接口正常返回
内容搬到别处了,浏览器自动跟着跳。301 永久、302 临时。
用在:网址换新地址、http 跳 https
错在请求本身:404 不存在、401 未登录、403 无权限、400 格式不对。
用在:地址写错、没带凭证、参数不对
服务器自己出错了:500 内部错误、503 忙不过来或维护中。
用在:代码报错、过载、停机维护
容易搞混?这样区分
HTTP 状态码是传输层的结论(这次请求成没成);业务错误码是接口返回内容里的字段(如 code: 1 表示「这个账号已被封」)。有些接口连业务失败也返回 200,只看状态码不看返回体,会漏掉这类失败。
看 业务错误码404 是「不存在」,403 是「存在但你没权限」。把 403 说成 404,用户会以为是自己地址错了,而不是权限不够;反过来把 404 说成 403,等于告诉别人「这里有什么东西」。
什么时候用得上
网址不存在时返回 404 并展示友好页面(提示回到首页),而不是白屏或 500。
接口返回 4xx / 5xx 时前端给不同提示:4 开头提示检查输入或登录,5 开头提示稍后再试。
线上监控里 5xx 突然升高,说明刚上线的版本出问题了,优先排查而不是等用户来报。
你可以这样跟 AI 说
直接复制下面这段,把【】里的换成你的情况。它比一句「帮我加个 X」多说清楚了:改哪里、不许动啥、做完交什么。
【范围】只处理 [页面/接口名] 的请求与错误,不动其他模块 【目标】 1. 请求失败时返回正确的状态码:不存在的内容返回 404,未登录返回 401,无权限返回 403,服务器出错返回 500,不要一律返回 200 2. 前端根据状态码给对应提示:4 开头提示检查输入或登录,5 开头提示稍后再试 【边界】不要自造一套复杂错误码体系;不要改动现有鉴权逻辑;不要为了省事把所有错误都返回 200 再用内容区分 【交付】 1. 指出每种错误在哪个文件、返回什么状态码 2. 我按 F12 打开网络面板能看到真实的状态码,而不是页面代码里写死的 3. 每种错误给我一个真实触发方式(比如访问哪个不存在的地址能看到 404) 【提醒】不确定某类错误该返回什么就问,不要自己发明数字
「不要一律返回 200」是关键:很多 AI 图省事把业务失败也返回 200,状态码就失去意义,前端永远分不清「成功」和「假成功」。
它说「做好了」,你怎么自己验
这是本站的重头戏。AI 最会的不是写代码,是说「已完成」。这一条,它通常最多做到「运行时」这层:真的跑起来了,能在本机看到结果。
要亲眼看到这些,才算数
- 按 F12 打开浏览器开发者工具,切到「网络」面板,刷新页面,看首页主请求的状态码是 200。
- 在网址栏故意访问一个不存在的地址(比如 /no-such-page),确认返回 404 且有友好页面,不是白屏也不是 500。
- 让 AI 给你看一个接口的完整返回:状态码 + 返回内容,而不是只转述一句「成功了」。
- 故意提交错误数据(比如把邮箱填成 abc 再点提交),看返回的是 4 开头还是 5 开头:4 开头说明校验生效,5 开头说明后端没兜住。
- 如果接口在数据出错时也返回 200,追问返回体里区分成功失败的那个字段叫什么、值是多少。
它常这么糊弄你
- 「错误已处理」——但页面没有任何提示,网络面板里那个请求实际是 500。打开网络面板看真实状态码。
- 一律返回 200:逻辑失败也返回 200,把错误码放在返回体里(如 code: 1 表示失败)。只看状态码会被骗,要连返回体一起看。
- 「404 页面已加」——但只是写了个好看的静态页,真实请求不存在时返回的其实是 500 或 200+空数据。
- 把 403 说成 404(「没有这个页面」):权限问题被伪装成不存在,用户不知道是自己没权限。
- 状态码在页面代码里写死而不是服务器真实返回——刷新后看网络面板立刻露馅。
状态码能验到「运行时」层:不用写代码,F12 网络面板里每个请求的真实状态码一目了然。但「每个接口的错误都被正确处理」覆盖所有接口,那要逐个验收加线上监控,才是生产层的事。
考考你 选一个你觉得对的
AI 说「保存接口已经接好,错误也处理了」。但你点保存时数据根本没存进去,最该先看什么?
状态码和返回体是原始证据:能区分是 4 开头(请求或校验问题)还是 5 开头(服务器问题),也能抓到「返回 200 但业务失败」这种藏起来的错误。C 只能证明「没存进去」,不能告诉你为什么。