达达工具

HTTP 状态码

查询 HTTP 状态码的含义,并分清那些容易混淆的组合——401 与 403、301 与 308、400 与 422。

仅在浏览器中处理免费使用

两边都能查。

46 个

状态码理由短语何时使用
100Continue
101Switching Protocols升级到 WebSocket 时使用。
103Early Hints在真正的响应就绪前先发出预加载提示。
200OK请求成功时的默认值。
201Created新资源已创建,用 Location 响应头指向它。
202Accepted只是排了队,还没做完,调用方需要回来查。
204No Content成功但没有内容可返回,带上正文也会被忽略。
206Partial Content响应 Range 请求头,只返回文件的一部分。
301Moved Permanently永久迁移。客户端可以把方法改成 GET。
302Found临时迁移。同样可能把方法改成 GET。
303See Other到别处去取结果,且总是用 GET。
304Not Modified缓存副本仍然有效,不返回正文。
307Temporary Redirect和 302 一样,但保持原方法。
308Permanent Redirect和 301 一样,但保持原方法。
400Bad Request完全无法理解这个请求。
401Unauthorized未通过认证。虽然名字如此,它说的是身份而不是权限。
402Payment Required
403Forbidden已经认证,但仍然不允许。
404Not Found没有这个资源,或者服务器不打算承认有。
405Method Not Allowed路径存在但这个动词不支持,把支持的写进 Allow。
406Not Acceptable客户端要求的格式一个也生成不了。
408Request Timeout
409Conflict与当前状态冲突,典型的是键重复。
410Gone被有意删除,不会再回来。
411Length Required
412Precondition FailedIf-Match 或 If-None-Match 的条件没有成立。
413Content Too Large正文超过了服务器接受的大小。
414URI Too Long
415Unsupported Media TypeContent-Type 不是这个接口处理的格式。
416Range Not Satisfiable
418I'm a teapot1998 年愚人节的玩笑,至今仍在注册表里。
422Unprocessable Content格式正确但语义有误,校验错误通常用它。
425Too Early
426Upgrade Required
428Precondition Required
429Too Many Requests请求过于频繁,用 Retry-After 告诉对方何时再来。
431Request Header Fields Too Large
451Unavailable For Legal Reasons因下架令等法律原因被屏蔽。
500Internal Server Error未处理的失败,是谁都不该主动返回的兜底。
501Not Implemented
502Bad Gateway上游服务器返回了无效内容。
503Service Unavailable宕机或过载,预计会恢复。
504Gateway Timeout上游服务器没有及时应答。
505HTTP Version Not Supported
507Insufficient Storage
511Network Authentication Required像公共 Wi-Fi 那样要求先登录的关口。

容易混淆的组合

  • 401403

    401 表示不知道你是谁;403 表示知道,但答案还是不行。

  • 301308

    301 允许客户端把 POST 变成 GET,308 会保留方法。接口请用 308。

  • 302303

    302 可能改变方法,303 总是换成 GET。表单提交之后用 303。

  • 400422

    400 用于服务器解析不了的正文,422 用于解析了但内容不对。

  • 404410

    404 说这里没有;410 说它被有意删除了,别再来问。

  • 502503

    502 是上游返回了无意义的内容,503 是这台服务器现在无法提供服务。

文件在浏览器本地处理,不会上传到服务器。

使用方法

无需注册、无需安装,也没有使用次数限制,完全免费。

输入号码或理由短语的一部分即可查找。列表随输入收窄,每一条都附有什么时候该返回它。

首位数字决定类别:1xx 是信息,2xx 成功,3xx 重定向,4xx 是请求方的问题,5xx 是服务端的问题。即使表里没有的码,也能看出这一层。

4xx 和 5xx 的区分在实际工作里分量不同。对畸形请求返回 500,会让值班的人去找一个并不存在的服务故障;对崩溃的处理返回 400,则会把真正的故障掩盖掉。

下面这些组合是代码评审里真正会争论的。401 表示不知道你是谁,403 表示知道但仍然不行。权限问题返回 401,等于让客户端把已经发过的凭据再发一遍。

理由短语保持规范原文而不翻译,因为那才是实际在链路上传输的文字。

输入的内容不会上传到服务器,查询全部在浏览器本地完成。

常与它一起使用的工具