插件窝 干货文章 HTTP的响应状态码有哪些

HTTP的响应状态码有哪些

请求 服务器 状态 资源 45    来源:    2025-04-24

HTTP 响应状态码由三位数字组成,用于表示服务器对客户端请求的处理结果。以下是完整的分类和常见状态码详解,按 RFC 9110(HTTP语义)标准整理:


1xx(信息性状态码)

表示请求已被接收,需要继续处理。 - 100 Continue:客户端应继续发送请求体(用于Expect: 100-continue场景)。 - 101 Switching Protocols:服务器同意升级协议(如WebSocket)。 - 102 Processing(WebDAV):服务器正在处理请求,但尚未完成。 - 103 Early Hints:预加载资源提示(与Link头部配合使用)。


2xx(成功状态码)

表示请求已成功处理。 - 200 OK:标准成功响应(GET/PUT/POST等)。 - 201 Created:资源创建成功(如POST返回新资源的URI)。 - 202 Accepted:请求已接受但未处理完成(异步任务)。 - 203 Non-Authoritative Info:代理服务器修改了原始响应。 - 204 No Content:响应无正文(如DELETE请求)。 - 205 Reset Content:要求客户端重置视图(如表单提交后清空)。 - 206 Partial Content:分块响应(用于Range请求或大文件下载)。 - 207 Multi-Status(WebDAV):多资源状态报告。 - 208 Already Reported(WebDAV):资源状态已重复报告。


3xx(重定向状态码)

表示需要客户端进一步操作以完成请求。 - 300 Multiple Choices:多选项重定向(罕见)。 - 301 Moved Permanently:资源永久迁移(SEO权重转移)。 - 302 Found(原302 Moved Temporarily):临时重定向(方法可能变为GET)。 - 303 See Other:强制用GET访问新URI(POST后显示结果页)。 - 304 Not Modified:资源未修改(缓存生效)。 - 305 Use Proxy(已废弃):要求使用代理。 - 307 Temporary Redirect:临时重定向(严格保持原方法)。 - 308 Permanent Redirect:永久重定向(严格保持原方法)。


4xx(客户端错误状态码)

表示客户端请求有误。 - 400 Bad Request:通用错误(如参数格式错误)。 - 401 Unauthorized:未认证(需提供WWW-Authenticate头部)。 - 402 Payment Required(保留未使用)。 - 403 Forbidden:无权限访问(与401的区别是身份已知但无权)。 - 404 Not Found:资源不存在或隐藏。 - 405 Method Not Allowed:方法不被支持(响应含Allow头部)。 - 406 Not Acceptable:服务端无法满足客户端要求的格式(如Accept头部)。 - 407 Proxy Auth Required:代理服务器要求认证。 - 408 Request Timeout:服务器等待请求超时。 - 409 Conflict:资源状态冲突(如并发修改)。 - 410 Gone:资源永久删除(比404更明确)。 - 411 Length Required:需Content-Length头部。 - 412 Precondition Failed:不满足请求头部的条件(如If-Match)。 - 413 Payload Too Large:请求体过大。 - 414 URI Too Long:URL超长(通常超过2KB)。 - 415 Unsupported Media Type:不支持的媒体类型(如上传文件格式错误)。 - 416 Range Not Satisfiable:请求范围无效(如文件只有100字节但请求Range: 200-300)。 - 417 Expectation Failed:无法满足Expect请求头。 - 418 I'm a teapot(彩蛋):来自RFC 2324,实际不会使用。 - 421 Misdirected Request:请求被发送到错误的服务器(HTTP/2)。 - 422 Unprocessable Entity(WebDAV):语义错误(如XML格式正确但内容无效)。 - 423 Locked(WebDAV):资源被锁定。 - 424 Failed Dependency(WebDAV):前置操作失败。 - 425 Too Early:服务器拒绝处理可能重放的请求(用于防重放攻击)。 - 426 Upgrade Required:要求协议升级(如HTTP到HTTPS)。 - 428 Precondition Required:要求条件请求(如If-Match)。 - 429 Too Many Requests:请求速率限制(配合Retry-After)。 - 431 Request Header Fields Too Large:请求头过大。 - 451 Unavailable For Legal Reasons:因法律原因不可访问(如政府审查)。


5xx(服务器错误状态码)

表示服务器处理请求时出错。 - 500 Internal Server Error:通用服务器错误(如代码异常)。 - 501 Not Implemented:不支持请求的功能(如未知方法)。 - 502 Bad Gateway:网关或代理从上游服务器收到无效响应。 - 503 Service Unavailable:服务不可用(如过载或维护)。 - 504 Gateway Timeout:网关或代理等待上游服务器超时。 - 505 HTTP Version Not Supported:不支持的HTTP版本。 - 506 Variant Also Negotiates:内容协商循环(服务器配置错误)。 - 507 Insufficient Storage(WebDAV):存储空间不足。 - 508 Loop Detected(WebDAV):操作循环(如无限重定向)。 - 510 Not Extended:需扩展请求(配合Expect头部)。 - 511 Network Auth Required:要求网络认证(如公共WiFi登录页)。


特殊场景状态码

  • 418 I'm a teapot:源自愚人节RFC,实际用于幽默或测试。
  • 444 No Response(Nginx扩展):服务器直接关闭连接。
  • 499 Client Closed Request(Nginx扩展):客户端提前关闭连接。

关键区别示例

  • 301 vs 302 vs 307/308
    • 301/308是永久重定向,浏览器会缓存;302/307是临时的。
    • 302/303可能改变方法为GET,307/308严格保持原方法。
  • 401 vs 403
    • 401表示未认证(需登录),403表示已认证但无权限。

掌握这些状态码能精准定位问题,尤其在调试API或排查爬虫问题时非常关键。