极简工具箱

免费在线工具 · 本地计算 · 无需上传

HTTP 状态码详解与易混淆对比

接口返回 401 还是 403,页面跳转该用 301 还是 302,改版后旧链接要不要留 404——这些选择背后都是状态码语义。本文按类别梳理常用码,并重点讲清几组最容易搞混的。

广告位(百度联盟)

一、五类状态码

一个实用的责任划分:4xx 先查调用方(参数、鉴权、路径),5xx 先查服务端(日志、依赖、负载)。

二、几组最容易混淆的

301 vs 302:301 表示资源永久迁移,搜索引擎会把旧 URL 的权重转移到新地址,浏览器也会强缓存;302 是临时跳转,不转移权重、不长期缓存。站点换域名、http 跳 https、规范化 www,应该用 301;活动页临时跳复用 302。用错 302 做永久迁移,是 SEO 权重流失的常见原因。

401 vs 403:401 是「你是谁还不知道」——没带或带了无效的凭证,响应应带 WWW-Authenticate 提示登录;403 是「知道你是谁,但你没权限」——登录了也访问不了,重新登录也没用。前端遇到 401 跳登录页,遇到 403 应该展示无权限提示。

404 vs 410:404 是「暂时没找到」,搜索引擎过段时间还会再来抓;410 是「永久删除、不会再有」,能更快让搜索引擎清理索引。整站改版批量下线页面,410 比 404 更干脆。

400 vs 422:400 是请求格式/参数本身不合法;422 是格式没问题但语义校验没过(字段值不合规)。不少框架用 422 承载表单校验错误。

三、常见状态码速查

200  请求成功
201  创建成功(POST 新建资源)
204  成功但无返回体
301  永久重定向(SEO 权重转移)
302  临时重定向
304  资源未修改,走缓存
400  请求参数/格式错误
401  未认证(需要登录)
403  已认证但无权限
404  资源不存在
405  请求方法不允许
408  请求超时
429  请求过于频繁(限流)
500  服务端内部错误
502  网关/反向代理拿到无效响应
503  服务暂时不可用(维护/过载)
504  网关等待上游超时

四、线上排查思路

先看状态码落在 4xx 还是 5xx 定责任方;再看时间点和请求路径是否集中;然后按链路往上游查:客户端 → CDN/负载均衡 → 网关(Nginx) → 应用 → 数据库/第三方依赖。502/504 通常是网关等不到上游,重点查应用进程和超时配置;503 常见于发布、扩容、限流;429 要先确认是自身限流还是对方限流。

调试时可以配合 HTTP 状态码速查 快速确认含义,用 User-Agent 解析 判断异常请求来自哪类客户端。做站点改版时,把旧 URL 用 301 指向新地址、并让 canonical 与最终域名保持一致,是避免权重分散的关键一步。

五、SEO 相关提醒

软 404(页面不存在却返回 200 并展示「未找到」)会让搜索引擎收录大量无意义页面;把所有错误都返回 200 再在 JSON 里写 code: 404,同样不利于爬虫识别。正确做法是让 HTTP 状态码如实反映结果,再配一个友好的错误页。

小结

4xx 查调用方、5xx 查服务端;永久迁移用 301、临时用 302;401 是没登录、403 是没权限。状态码如实返回,排查和 SEO 都会少走很多弯路。

本文相关工具(本地计算,无需上传)

更多使用教程