- 400 Bad Request
- 服务器看不懂这个请求:语法错误、参数非法或请求体损坏。
- 401 Unauthorized
- 需要身份认证,或提供的凭据不对。注意它问的是「你是谁」。
- 402 Payment Required
- 为将来的付费场景预留,现实中几乎不用。
- 403 Forbidden
- 身份已知但没有权限,再说一遍凭据也没用。与 401 的区别就在这里。
- 404 Not Found
- 这个地址上没有资源。响应是「当前不存在」,不代表永久删除(那是 410)。
- 405 Method Not Allowed
- 地址存在,但不支持这个方法;Allow 头会列出支持哪些。
- 406 Not Acceptable
- 没有任何一种表述能满足 Accept 头里的要求。
- 407 Proxy Authentication Required
- 中间的代理要求先认证,而不是源站。
- 408 Request Timeout
- 客户端迟迟没把请求发完,服务器先放开连接。
- 409 Conflict
- 请求与资源当前状态冲突,典型场景是两个人在改同一份数据。
- 410 Gone
- 资源曾存在且已永久删除,搜索引擎可以据此从索引里拿掉。
- 411 Length Required
- 服务器要求带上 Content-Length 头才能处理。
- 412 Precondition Failed
- If-Match 之类的先决条件不成立,说明数据在期间被改过。
- 413 Content Too Large
- 请求体超过服务器允许的大小。RFC 9110 里的名称是 Content Too Large。
- 414 URI Too Long
- URL 太长,服务器拒绝处理。多半是把数据错误地塞进了查询串。
- 415 Unsupported Media Type
- 请求体的媒体类型这个接口不认,检查 Content-Type。
- 416 Range Not Satisfiable
- 请求的字节范围超出资源长度,通常是 Range 头的数字写错了。
- 417 Expectation Failed
- Expect 头里提出的期望无法满足。
- 418 I'm a teapot
- RFC 2324 愚人节玩笑产物,因为实在有名,很多框架至今真的实现了它。
- 421 Misdirected Request
- 请求被送到了无权代表该域名的服务器,多出现在连接复用场景。
- 422 Unprocessable Content
- 语法没问题但内容不合业务规则,表单校验失败常用它。
- 423 Locked
- 资源被另一个操作锁定,暂时不能改(WebDAV)。
- 424 Failed Dependency
- 因为依赖的另一个请求失败了,所以这个请求也失败(WebDAV)。
- 425 Too Early
- 服务器不愿处理可能被重放的早期请求,防重放攻击。
- 426 Upgrade Required
- 服务器要求换协议,Upgrade 头里会写明换哪个。
- 428 Precondition Required
- 服务器要求带先决条件,用来避免并发覆盖别人的修改。
- 429 Too Many Requests
- 触发限流了,Retry-After 头会告诉你多久后可以再试。
- 431 Request Header Fields Too Large
- 请求头太大,常见原因是 Cookie 攒得太多。
- 451 Unavailable For Legal Reasons
- 因法律原因不可用,例如收到下架通知。编号取自《华氏 451 度》。