HTTP的状态码, 它是由服务器来发给客户端的响应标识的, 它的格式是三个数字加在一起的, 一共分为五大类, 第一大类是1xx, 也就是信息类的, 第二大类是2xx, 即成功类的, 第三大类是3xx, 就是重定向类的, 第四大类是4xx, 属于客户端错误类的, 第五大类是5xx, 为服务端错误类的, 这个对照表覆盖的范围是从100到599的所有状态码的数值的全范围, 提供给开发人员和运维人员在对接联调的过程当中去使用, 也提供给开发人员和运维人员在排查故障的时候快速定位出问题所在。

状态码分类速查表

类别 范围 含义 典型码值
1xx 100-199 信息类,请求已接收,需继续处理 100 Continue
2xx 200-299 成功,请求已被正确处理 200 OK、201 Created、204 No Content
3xx 300-399 重定向灵音心图,客户端需进一步操作 301、302、304
4xx 400-499 客户端错误,请求本身有误 400、403、404、405、409、429
5xx 500-599 服务端错误HTTP状态码查询工具,服务器处理失败 500、502、503、504

高频状态码详解

收到了200OK这个结果, 这说明请求是成功的, 服务器已经把我们要找的资源返回给了我们。

201Created表示资源已经成功创建, 这个状态码一般会在通过POST或者PUT请求发送数据到服务器, 而响应结果是新建了一个资源的时候使用。

301MovedPermanently的意思是说, 这个资源已经到了新的地方去了, 它已经永久地被搬走了, 所以客户端这边需要把这个链接给修改一下, 去更新到最新的地址上去。

这里有一个 HTTP 返回的状态码, 它的值是302Found, 它表示资源发生了一次暂时性的移动, 并且要求访问资源的客户端应该立即转向那些被指定的新地址去重新发起询问。

304未修改表示资源没有发生变化, 客户端能够直接选择使用存放在本地的缓存内容。

400BadRequest的意思是, 请求的格式出错了, 服务器没有办法去解析它。

出现了401Unauthorized这个问题, 意思就是身份没有认证通过, 所以需要登录, 或者需要携带有效的Token。

403Forbidden这个提示的意思是说, 系统已经确认了你的身份信息, 也就是你确实经过认证了, 但是你没有权限去访问这里提到的那个资源。

404NotFound这个错误的状态码表示, 用户去获取的那个资源的路径是不存在的。

405MethodNotAllowed这个意思就是说, 现在你发出的这个请求方法, 并没有被当前的这个资源给支持起来。

HTTP状态码查询工具:1xx到5xx全状态码速查对照表(图1)

409Conflict表示资源状态发生冲突, 出现这种情况的时候, 可能是因为唯一的键出现了重复的情况。

出现了429TooManyRequests这样的状况, 原因是请求的频率超出了规定的限制, 于是触发了限流机制。

出现了500InternalServerError这一情况, 意思是服务器那边发生了内部异常, 没有返回具体的错误详情。

502BadGateway这个错误的含义是, 网关或者在充当代理角色的设备, 收到了来自上游服务器的无效的响应结果。

503ServiceUnavailable, 这个意思HTTP状态码查询工具,就是服务暂时用不了。出现这种情况的原因, 通常, 是因为服务器过载了。或者是, 正在做系统维护。

这个提示的意思是504GatewayTimeout, 也就是网关在等待前面的服务器给出回应的时候, 时间超过了规定的限度, 所以就报了这个错误。

排查与使用建议

1. 当收到4xx响应时, 你首先应该去检查请求参数, 同时要去检查认证凭据, 另外还要去检查请求方法(GET/POST), 最后还要去仔细查看URL路径的拼写是否有误。

2. 当服务端返回了5xx状态码的时候, 应当立刻去查看服务端那边的日志文件, 以此来实现对异常堆栈以及超时记录的定位操作。

3. 301和302之间有一个核心区别, 这个区别主要在于缓存的处理方式, 具体来说, 301属于永久重定向类型, 在这种情况下浏览器以及中间件等组件都会把结果进行缓存, 而302则属于临时重定向情况, 遇到这种情况时系统不会触发现有数据的缓存机制, 基于这些不同点, 如果我们的开发过程中存在迁移目标地址不确定的现象, 那么建议大家在操作中倾向于使用302状态码。

4. 对于404这个现象, 你需要去区分清楚它是属于哪一种成因导致的, 其中的一种情况是资源本身确实是不存在的, 这通常会体现出业务逻辑层面的问题, 而另一种情况则是路由没有进行正确的配置, 这一般是出现在部署环节或者是代码编写方面的错误。

查询方式说明

这个对照表的编写是依据RFC 7231, 也就是HTTP/1.1, 和RFC 9110, 也就是HTTP Semantics里面定义的语义来进行的, 所以它可以被直接当作接口联调和故障定位的参考依据来看待。

如果你需要在线快速检索单一状态码的官方语义与示例响应头, 可以访问 gname.xin 提供的 HTTP 状态码查询工具。输入三位数字之后, 即可返回对应的含义说明、适用场景及标准响应示例。