(一张速查表)
一、分类总览
1xx 信息性 – 已收到,请继续
2xx 成功 – 请求已完成
3xx 重定向 – 需进一步操作
4xx 客户端错 – 请求有问题
5xx 服务器错 – 服务器异常
二、1xx 信息性状态码
三、2xx 成功状态码
四、3xx 重定向状态码
五、4xx 客户端错误状态码
六、5xx 服务器错误状态码
速记口诀
1xx 等一等,2xx 成功回,
3xx 去别处,4xx 你错了,
5xx 我挂了。
不明白继续往下看
1xx - 信息性状态码:请求已被接收,继续处理。
2xx - 成功状态码:请求已成功被服务器接收、理解并接受。
3xx - 重定向状态码:需要客户端采取进一步的操作才能完成请求。
4xx - 客户端错误状态码:客户端请求有语法错误或无法被处理。
5xx - 服务器错误状态码:服务器在处理请求时发生错误。
1xx 信息性状态码 (Informational)
表示临时响应,提示请求已被接收,需要客户端继续操作。
100 Continue
含义:客户端应继续其请求。服务器已收到请求头,并且客户端可以继续发送请求体(例如,在发送一个大型POST请求体之前)。
场景:客户端在发送大型请求体前,会先发送一个包含
Expect: 100-continue
头的请求来询问服务器是否愿意接收。服务器同意则返回100。
101 Switching Protocols
含义:服务器应客户端请求,正在切换协议(如从HTTP升级到WebSocket)。
场景:WebSocket连接建立时,服务器对客户端的升级请求返回此代码。
102 Processing (WebDAV)
含义:服务器已收到并正在处理请求,但尚未有响应可用。
场景:用于处理耗时较长的请求(如操作多个文件),防止客户端因超时而断开连接。服务器定期发送102以保持连接活跃。
103 Early Hints
含义:用于在最终响应之前返回一些预处理响应头,允许浏览器预加载资源。
场景:服务器在生成完整HTML页面时,可以提前提示浏览器加载关键CSS或JS文件,显著提升页面加载性能。
2xx 成功状态码 (Success)
表示请求已成功处理。
200 OK
含义:请求成功。对于GET请求,响应中会包含所请求的资源。
场景:最常见的成功状态码。
201 Created
含义:请求成功,并在服务器上创建了新的资源。
场景:通常是在POST或PUT请求之后。响应头
Location
应包含新资源的URI。
202 Accepted
含义:请求已被接受,但尚未处理完成。处理可能是异步的。
场景:适用于需要长时间处理的请求,如视频转码、大数据分析任务。
203 Non-Authoritative Information
含义:服务器成功处理了请求,但返回的元信息(头部字段)来自副本或第三方,而非原始服务器。
场景:常见于中间代理(如CDN、缓存服务器)修改了响应头。
204 No Content
含义:服务器成功处理了请求,但不需要返回任何实体内容。
场景:常用于DELETE请求成功或表单提交后,无需跳转页面的AJAX请求。
205 Reset Content
含义:类似于204,但额外要求客户端重置当前文档视图(如清空表单)。
场景:提交表单后,清空表单所有字段以便用户再次输入。
206 Partial Content
含义:服务器成功处理了部分GET请求。响应头
Content-Range
指定了返回的内容范围。场景:用于大文件下载的断点续传或视频/音频的流媒体播放。
3xx 重定向状态码 (Redirection)
表示需要客户端采取进一步的操作来完成请求。
300 Multiple Choices
含义:请求的资源有多个可选响应(如不同语言版本)。客户端可自行选择。
场景:在实践中非常罕见。
301 Moved Permanently
含义:请求的资源已永久移动到新的URI。浏览器和搜索引擎会缓存此重定向,将来所有请求都应直接使用新的URI。
场景:网站改版、更换域名。对SEO有重要影响。
302 Found
含义:请求的资源临时从不同的URI响应。客户端应继续使用原始URI进行未来的请求。
场景:最常见的临时重定向,例如用户登录后临时跳转到首页。
303 See Other
含义:对当前请求的响应可以在另一个URI上被找到,且应使用GET方法获取。
场景:主要用于在POST操作完成后进行重定向,防止用户刷新页面时重复提交表单。
304 Not Modified
含义:资源未被修改。客户端可以使用缓存的版本。
场景:服务器根据请求头(如
If-Modified-Since
、If-None-Match
)验证缓存后,若资源未变化则返回此状态,节省带宽。
305 Use Proxy
含义:请求者必须通过指定的代理访问资源。
状态:由于安全原因,已被废弃。
307 Temporary Redirect & 308 Permanent Redirect
含义:307和308是302和301的更严格版本。它们要求重定向时不能更改原始的请求方法(如POST必须保持为POST)。
场景:用于确保非GET请求在重定向后不会意外地变为GET请求,保证数据的完整性。
4xx 客户端错误状态码 (Client Error)
表示错误似乎由客户端引起。
400 Bad Request
含义:服务器无法理解请求,因为存在语法错误(如请求体格式错误、参数无效)。
场景:非常通用的客户端错误。
401 Unauthorized
含义:请求需要用户认证。响应会包含一个
WWW-Authenticate
头,指示如何进行认证。场景:访问受保护的资源时未提供或提供了错误的凭证。
402 Payment Required
含义:保留以供将来使用(如数字支付系统)。
场景:极少使用,有时在API中用于表示需要付费或积分。
403 Forbidden
含义:服务器理解请求,但拒绝授权。与401不同,身份验证也无济于事。
场景:用户已登录,但其权限不足以访问某个资源(如普通用户尝试访问管理员页面)。
404 Not Found
含义:服务器无法找到请求的资源。
场景:最常见的错误之一,通常由错误的URL或链接导致。
405 Method Not Allowed
含义:服务器知道请求的方法(如PUT),但目标资源不支持该方法。
场景:向只允许GET的API端点发送POST请求。响应头
Allow
会列出支持的方法。
406 Not Acceptable
含义:服务器无法提供符合客户端请求头
Accept
、Accept-Language
等要求的内容。场景:客户端要求接收XML(
Accept: application/xml
),但服务器只能生成JSON。
429 Too Many Requests
含义:用户在给定的时间内发送了太多请求(“限速”或“限流”)。
场景:防止暴力攻击和API滥用。响应头
Retry-After
可能提示客户端多久后可以重试。
5xx 服务器错误状态码 (Server Error)
表示服务器在处理请求时发生了错误。
500 Internal Server Error
含义:服务器遇到了一个未曾预料的情况,导致它无法完成对请求的处理。一个非常笼统的错误。
场景:后端代码出现未捕获的异常、配置错误等。
501 Not Implemented
含义:服务器不支持完成请求所需的功能(如未知的HTTP方法)。
场景:客户端发送了一个服务器无法识别的请求方法。
502 Bad Gateway
含义:服务器作为网关或代理,从上游服务器收到了一个无效的响应。
场景:后端应用服务器(如PHP-FPM, Tomcat)崩溃或无响应,而前端的Nginx/Apache无法正确处理。
503 Service Unavailable
含义:服务器当前无法处理请求(由于临时过载或维护)。通常是临时状态。
场景:服务器正在进行维护或流量激增。响应头
Retry-After
可提示服务恢复的大概时间。
504 Gateway Timeout
含义:服务器作为网关或代理,未能及时从上游服务器收到响应。
场景:后端应用服务器处理时间过长,导致网关(如Nginx)等待超时。问题在于上游服务器响应慢。
505 HTTP Version Not Supported
含义:服务器不支持请求中使用的HTTP协议版本。
场景:客户端使用了服务器不支持的HTTP版本(如HTTP/3)进行请求。