HTTP 状态码,是服务器在响应客户端(比如你的浏览器)请求时返回的代码,用来告诉客户端请求的结果是什么状态。它们主要分为几个大类:
-
3xx - 重定向: 需要客户端采取进一步的操作才能完成请求。
-
4xx - 客户端错误: 客户端发出的请求有问题。
-
5xx - 服务器错误: 服务器处理请求时发生了错误。
一、信息响应 (1xx) - 请求已接收,继续处理
-
100 Continue (继续)
-
通俗理解: “你发的请求头我看了没问题,可以把剩下的数据发过来了!”
-
技术说明: 服务器已收到请求头,客户端应继续发送请求体(如上传大文件前确认)。
-
典型场景: 客户端发送包含
Expect: 100-continue
头的请求时触发。
-
二、成功响应 (2xx) - 请求成功处理
-
200 OK (成功)
-
通俗理解: “你要的东西在这儿,一切正常!”
-
技术说明: 标准成功响应,请求的资源随响应体返回(如 HTML 页面、JSON 数据等)。
-
典型场景: 网页加载成功、API 调用返回数据。
-
-
201 Created (已创建)
-
通俗理解: “你要的新东西我已经造好了!”
-
技术说明: 请求成功且服务器创建了新资源(如新建用户、上传文件)。响应头
Location
通常包含新资源地址。 -
典型场景: 提交表单创建新数据(如发微博)。
-
-
204 No Content (无内容)
-
通俗理解: “你要的操作我执行完了,但没啥可返回的。”
-
技术说明: 服务器成功处理请求,但响应体无内容(如删除资源、更新状态)。
-
典型场景: 删除一条评论、切换开关状态。
-
-
206 Partial Content (部分内容)
-
通俗理解: “你要的文件太大,我先给你发一部分!”
-
技术说明: 服务器成功处理了部分范围请求(通过请求头
Range
指定)。 -
典型场景: 视频断点续传、大文件分块下载。
-
三、重定向 (3xx) - 需要进一步操作
-
301 Moved Permanently (永久重定向)
-
通俗理解: “你要的东西搬家了,以后都去新地址找!”
-
技术说明: 请求的资源已永久移动到新 URL,浏览器/搜索引擎会自动更新书签和索引。响应头
Location
包含新地址。 -
典型场景: 网站更换域名(旧链接跳转到新域名对应页面)。
-
-
302 Found (临时重定向)
-
通俗理解: “你要的东西临时在另一个地方,先去那儿拿!”
-
技术说明: 请求的资源临时从不同 URL 响应,浏览器会跳转但不会更新书签/索引。
-
典型场景: 用户登录后临时跳转到首页。
-
-
304 Not Modified (未修改)
-
通俗理解: “你要的东西没变,直接用你本地缓存的版本吧!”
-
技术说明: 资源自客户端上次请求后未修改,服务器不返回资源内容。
-
典型场景: 刷新页面时,浏览器缓存中的图片/CSS/JS 未过期。
-
-
307 Temporary Redirect (临时重定向)
-
通俗理解: “和 302 类似,但必须用原请求方法重试(比如 POST 不能变 GET)!”
-
技术说明: 与 302 功能相同,但严格要求重定向时使用原始请求方法(如 POST 重定向后仍用 POST)。
-
典型场景: 需要保持 POST 请求的重定向(如表单提交后临时跳转)。
-
-
308 Permanent Redirect (永久重定向)
-
通俗理解: “和 301 类似,但必须用原请求方法重试!”
-
技术说明: 与 301 功能相同,但严格要求重定向时使用原始请求方法。
-
典型场景: 网站重构后永久迁移 API 接口地址,并保持请求方法一致。
-
四、客户端错误 (4xx) - 请求有问题
-
400 Bad Request (错误请求)
-
通俗理解: “你发了个我看不懂的请求,检查下格式吧!”
-
技术说明: 服务器因语法无效、格式错误、数据过大等原因无法理解请求。
-
典型场景: 前端提交的 JSON 格式错误、上传文件超过限制。
-
-
401 Unauthorized (未授权)
-
通俗理解: “你没带身份证(凭证),我不知道你是谁!”
-
技术说明: 请求需要身份验证(如登录),但未提供有效凭证(如 Token、Cookie)。
-
典型场景: 访问需要登录的页面时未登录。
-
-
403 Forbidden (禁止访问)
-
通俗理解: “我知道你是谁,但你没权限干这事!”
-
技术说明: 服务器理解请求,但拒绝执行(因权限不足、IP 被禁等)。
-
典型场景: 普通用户尝试访问管理员后台、服务器禁止目录浏览。
-
-
404 Not Found (未找到)
-
通俗理解: “你要的东西根本不存在!”
-
技术说明: 服务器找不到请求的资源(URL 错误、资源已删除)。
-
典型场景: 输入错误网址、点击失效链接。
-
-
405 Method Not Allowed (方法不允许)
-
通俗理解: “这个地址不能用这种操作(比如对网页用 DELETE)!”
-
技术说明: 请求的 URL 不支持该 HTTP 方法(如对静态页面发起
POST
请求)。 -
典型场景: 向只支持
GET
的 API 端点发送POST
请求。
-
-
408 Request Timeout (请求超时)
-
通俗理解: “你发请求太慢了,我不等了!”
-
技术说明: 服务器在等待请求发送时超时(客户端发送数据过慢)。
-
典型场景: 网络延迟高导致请求头未及时发送完成。
-
-
429 Too Many Requests (请求过多)
-
通俗理解: “你操作太频繁了,歇会儿再来!”
-
技术说明: 客户端在规定时间内发送了过多请求(触发限流规则)。
-
典型场景: 频繁刷新页面、API 调用超过速率限制。
-
五、服务器错误 (5xx) - 服务器处理失败
-
500 Internal Server Error (内部服务器错误)
-
通俗理解: “服务器自己出故障了,不怪你!”
-
技术说明: 服务器遇到未预料的错误(代码异常、配置错误、依赖故障)。
-
典型场景: 后端程序抛出未捕获的异常、数据库连接失败。
-
-
502 Bad Gateway (错误网关)
-
通俗理解: “我(网关/代理)问后面的服务要数据,但它挂了/没响应!”
-
技术说明: 服务器作为网关或代理时,从上游服务器收到无效响应。
-
典型场景: Nginx 代理的后端服务崩溃或未启动。
-
-
503 Service Unavailable (服务不可用)
-
通俗理解: “服务器忙或维护中,暂时不能服务!”
-
技术说明: 服务器暂时无法处理请求(过载、维护、主动熔断)。
-
典型场景: 流量激增导致服务器过载、计划维护停机。
-
-
504 Gateway Timeout (网关超时)
-
通俗理解: “我(网关/代理)等后面的服务响应,但它太慢了!”
-
技术说明: 服务器作为网关或代理时,未及时从上游服务器收到响应。
-
典型场景: 后端服务处理时间过长,超过代理服务器设置的超时时间。
-
常用
-
304 Not Modified (未修改)
-
通俗理解: “你要的东西没变,直接用你本地缓存的版本吧!”
-
技术说明: 这是客户端(浏览器)在发送请求时,会附带一些信息(比如
If-Modified-Since
或ETag
),告诉服务器它本地缓存了这个资源的某个版本。服务器检查后发现资源自从客户端缓存后确实没有修改过,就会返回 304 状态码。这样浏览器就知道可以直接使用本地缓存的资源,而不用服务器重新传输整个文件,节省了带宽和时间。 -
典型场景: 刷新网页时,图片、CSS、JS 等静态资源经常看到 304,表示这些资源没变,浏览器从本地加载了。
-
-
403 Forbidden (禁止访问)
-
通俗理解: “我知道你是谁,也知道你要什么,但对不起,你就是没有权限看/做这个!”
-
技术说明: 服务器理解请求,但拒绝执行它。这通常是因为客户端没有访问所请求资源所需的权限。服务器知道你是谁(身份认证可能成功),但你的账户权限不足以访问这个资源。
-
典型场景:
-
尝试访问网站后台管理页面但你不是管理员。
-
尝试访问服务器上另一个用户的私有文件夹。
-
网站管理员设置了目录禁止浏览(目录列表被关闭),而你直接访问了目录路径。
-
某些需要特定权限的API接口。
-
-
-
404 Not Found (未找到)
-
通俗理解: “你要的东西在我这根本不存在,找不到啊!”
-
技术说明: 服务器找不到客户端请求的资源(如网页、图片、文件)。这是最常见的错误之一。原因通常是请求的 URL 路径拼写错误、资源已被删除或移动,或者链接本身是失效的(死链)。
-
典型场景:
-
网页链接输错了(比如
exmaple.com
输成exmple.com
)。 -
点击了一个指向已被删除页面的链接。
-
网站改版后,旧页面的URL失效了。
-
-
-
500 Internal Server Error (内部服务器错误)
-
通俗理解: “服务器自己出故障了,搞砸了你的请求,不关你的事!”
-
技术说明: 服务器在处理请求时遇到了一个它没有预料到的、无法处理的错误。这是一个通用的服务器端错误信息。具体原因可能千差万别:服务器配置错误、应用程序代码有Bug、数据库连接失败、服务器资源(内存、CPU)耗尽、依赖服务故障等等。
-
典型场景:
-
网站后台程序(PHP, Python, Java等)运行时抛出未捕获的异常。
-
服务器配置文件(如
.htaccess
,web.config
)有语法错误。 -
数据库崩溃或连接超时。
-
服务器过载。
-
-
小结
状态码 | 简明含义与说明 |
---|---|
1xx (信息) | |
100 | 继续发送请求体。 (服务器已收到请求头) |
2xx (成功) | |
200 | 请求成功。 (资源随响应体返回) |
201 | 资源创建成功。 (新资源已建立) |
204 | 请求成功,无返回内容。 (操作完成,无需返回数据) |
206 | 返回部分内容。 (处理了范围请求) |
3xx (重定向) | |
301 | 资源已永久移动。 (请使用新地址 - 书签/索引会更新) |
302 | 资源临时移动。 (请临时使用新地址) |
304 | 资源未修改,用缓存。 (信息性,用户通常不可见) |
307 | 临时重定向,且必须保持原请求方法。 (如POST仍是POST) |
308 | 永久重定向,且必须保持原请求方法。 |
4xx (客户端错误) | |
400 | 请求无效或格式错误。 (服务器无法理解) |
401 | 未认证/未登录。 (需要提供有效身份凭证) |
403 | 有权限问题,禁止访问。 (客户端问题 - 认证成功但权限不足) |
404 | 你要的东西不存在。 (客户端问题 - 错误的URL/资源已删) |
405 | 请求方法不被允许。 (如对网页用DELETE) |
408 | 请求发送超时。 (服务器等待请求数据时超时) |
429 | 请求过多。 (触发速率限制) |
5xx (服务器错误) | |
500 | 服务器内部出错。 (服务器问题 - 未预料错误/代码故障) |
502 | 网关/代理从上游收到无效响应。 (后端服务可能挂了) |
503 | 服务暂时不可用。 (过载、维护中) |
504 | 网关/代理等待上游响应超时。 (后端服务响应太慢) |