Subsections of Web Pattern
HTTP Code
1xx - 信息性状态码(临时响应)
表示请求已收到,正在继续处理。平时在浏览器中很少见到。
- 100 Continue:客户端应继续发送请求的剩余部分。通常用于 POST 或 PUT 大量数据前,先询问服务器是否愿意接收。
- 101 Switching Protocols:客户端要求切换协议(如切换到 WebSocket),服务器已同意。
2xx - 成功状态码(请求成功)
表示请求已被服务器成功接收、理解并处理。
- 200 OK:最常用的成功状态码。表示请求成功,返回的响应体包含了所请求的数据(如 HTML 页面、JSON 数据等)。
- 201 Created:创建成功。通常在 POST 或 PUT 请求后,表示成功在服务器上创建了一个新资源。响应头
Location字段通常会包含新资源的 URL。 - 202 Accepted:请求已接受,但尚未处理完成。适用于异步任务,比如“请求已进入队列,正在处理中”。
- 204 No Content:请求成功,但响应报文中没有实体的主体部分。常用于 DELETE 请求成功,或前端只需知道操作成功而无需返回数据的 AJAX 请求。
3xx - 重定向状态码(需要进一步操作)
表示客户端需要执行额外的操作来完成请求,通常是重定向。
- 301 Moved Permanently:永久重定向。请求的资源已被永久移动到新的 URL。搜索引擎会更新其链接到新的地址。浏览器会缓存这个重定向。
- 302 Found:临时重定向。请求的资源临时从另一个 URL 响应。搜索引擎不会更新链接。这是最常见的重定向类型,但规范要求方法不变(实际上浏览器常会改为 GET)。
- 304 Not Modified:资源未修改。用于缓存控制。当客户端拥有缓存的版本,并通过请求头(如
If-Modified-Since)询问资源是否更新时,如果资源未变,服务器会返回此状态码,告诉客户端直接使用缓存。这节省了带宽。 - 307 Temporary Redirect:临时重定向(严格)。与 302 类似,但严格要求客户端不能改变原始的请求方法(例如,POST 必须仍是 POST)。比 302 更规范。
4xx - 客户端错误状态码(请求有误)
表示客户端可能出错,服务器无法处理请求。
- 400 Bad Request:错误的请求。服务器因为请求的语法无效而无法理解。就像一个语法错误的句子,服务器看不懂。
- 401 Unauthorized:未认证。表示请求需要用户认证。通常需要登录或提供 Token。注意,这个名字容易误解,它实际是“未认证”,而不是“未授权”。
- 403 Forbidden:禁止访问。服务器理解请求,但拒绝执行。与 401 不同,身份验证也无济于事(比如普通用户尝试访问管理员页面)。
- 404 Not Found:最著名的错误码。服务器找不到请求的资源。可能是 URL 错误,或资源已被删除。
- 405 Method Not Allowed:方法不被允许。请求行中指定的方法(GET, POST 等)不能用于请求此资源。例如,对只接受 GET 的 URL 发送了 POST 请求。
- 408 Request Timeout:请求超时。服务器等待客户端发送请求的时间过长。
- 409 Conflict:冲突。请求与服务器的当前状态冲突。常见于 PUT 请求(例如,修改文件时版本冲突)。
- 429 Too Many Requests:请求过多。客户端在给定的时间内发送了太多请求(限流)。
5xx - 服务器错误状态码(服务器处理请求出错)
表示服务器在处理请求时发生错误或内部故障。
- 500 Internal Server Error:最通用的服务器错误码。服务器遇到了一个未曾预料的状况,导致它无法完成对请求的处理。通常是后端代码抛出了未捕获的异常。
- 502 Bad Gateway:错误的网关。服务器作为网关或代理,从上游服务器收到了一个无效的响应。常见于 Nginx 后面的应用服务器(如 PHP-FPM)挂掉或未启动。
- 503 Service Unavailable:服务不可用。服务器当前无法处理请求(由于超载或进行停机维护)。通常,这是一个临时状态。响应头中可能包含
Retry-After字段,告知客户端何时可以重试。 - 504 Gateway Timeout:网关超时。服务器作为网关或代理,未能及时从上游服务器收到响应。常见于网络延迟或上游服务器处理过慢。
快速记忆表格
| 状态码 | 类别 | 含义 | 常见场景 |
|---|---|---|---|
| 200 | 成功 | 请求成功 | 正常获取网页或数据 |
| 201 | 成功 | 创建成功 | 创建新用户、新文章成功 |
| 204 | 成功 | 无内容 | 删除成功,或前端AJAX请求无需返回数据 |
| 301 | 重定向 | 永久移动 | 网站改版,旧链接永久跳转到新链接 |
| 302 | 重定向 | 临时移动 | 登录后跳回首页 |
| 304 | 重定向 | 未修改 | 使用浏览器缓存,节省流量 |
| 400 | 客户端错误 | 错误请求 | 请求参数格式错误 |
| 401 | 客户端错误 | 未认证 | 需要登录 |
| 403 | 客户端错误 | 禁止访问 | 权限不足 |
| 404 | 客户端错误 | 未找到 | 请求的URL不存在 |
| 429 | 客户端错误 | 请求过多 | API调用频率超限 |
| 500 | 服务器错误 | 内部服务器错误 | 后端代码Bug,数据库连接失败 |
| 502 | 服务器错误 | 错误网关 | Nginx 无法连接到后端服务 |
| 503 | 服务器错误 | 服务不可用 | 服务器维护或过载 |
| 504 | 服务器错误 | 网关超时 | 后端服务响应太慢 |
希望这个列表对您有帮助!