目录
一、HTTP协议的状态码
-
1xx(信息性状态码)
- 100 Continue:
- 场景:客户端在发送包含主体(如 POST 请求中的数据)的请求时,先发送请求头,询问服务器是否愿意接收主体。如果服务器返回 100 Continue,客户端就可以继续发送主体部分。例如,在上传大文件时,浏览器先发送请求头告知服务器文件相关信息,收到 100 Continue 后再发送文件内容。
- 作用:用于减少不必要的数据传输,提高性能。
- 101 Switching Protocols:
- 场景:当客户端请求升级协议,如从 HTTP/1.1 升级到 HTTP/2 或者切换到 WebSocket 协议时,服务器同意升级就会返回此状态码。例如,在建立 WebSocket 连接时,初始的 HTTP 请求得到 101 响应后,就可以开始使用 WebSocket 协议通信。
- 作用:实现协议的平滑升级。
- 100 Continue:
-
2xx(成功状态码)
- 200 OK:
- 场景:这是最常见的成功状态码。用于服务器成功处理请求并返回请求的资源的情况。如用户在浏览器中访问网页,服务器找到并返回网页内容时就返回 200 OK。在 API 调用中,成功获取数据后也返回此状态码。
- 作用:表明请求成功完成。
- 201 Created:
- 场景:主要用于资源创建。例如,在内容管理系统中,用户通过 POST 请求创建一篇新文章,服务器成功创建后返回 201 Created,并在响应头的 Location 字段中给出新文章的 URL。
- 作用:告知客户端资源已成功创建。
- 202 Accepted:
- 场景:适用于服务器接受了请求,但尚未完成处理的情况。比如,在处理复杂的后台任务(如大型文件处理、数据分析)时,服务器返回 202 Accepted,表示已接收任务,后续客户端可以通过轮询或服务器推送获取任务进度和结果。
- 作用:让客户端知道请求已被接收,等待进一步处理。
- 204 No Content:
- 场景:当服务器成功处理请求,但没有内容需要返回时使用。如用户发送 DELETE 请求删除资源,服务器成功删除后返回 204 No Content。
- 作用:确认操作成功,但无数据返回。
- 200 OK:
-
3xx(重定向状态码)
- 301 Moved Permanently:
- 场景:请求的资源被永久移动到新的 URI。例如,网站重构或域名变更时,旧资源的请求会收到 301 状态码,同时在 Location 字段中指定新位置。搜索引擎会更新索引中的链接指向新 URI。
- 作用:引导客户端更新书签等资源定位方式,确保后续访问正确。
- 302 Found(原 302 Moved Temporarily):
- 场景:资源临时移动到新位置。比如,服务器维护时,将某些页面临时重定向到维护通知页面。与 301 不同的是,这种移动是暂时的,搜索引擎通常不会更新索引。
- 作用:实现资源的临时跳转。
- 304 Not Modified:
- 场景:客户端发送带有条件的请求(如 If - Modified - Since 或 If - None - Match 头),服务器判断资源未修改,客户端可使用本地缓存。例如,浏览器再次请求已缓存的网页,服务器返回 304,浏览器就继续使用本地缓存的页面。
- 作用:节省带宽和服务器资源,提高访问效率。
- 301 Moved Permanently:
-
4xx(客户端错误状态码)
- 400 Bad Request:
- 场景:客户端发送的请求语法有误,服务器无法理解。如 API 请求中,参数缺失、格式错误(如日期格式错误)时,服务器返回 400 Bad Request。
- 作用:提示客户端请求格式错误,需要修正。
- 401 Unauthorized:
- 场景:请求的资源需要用户认证,但客户端未提供有效认证信息或认证失败。例如,在会员制网站中,未登录用户访问会员专属内容时会收到此状态码。
- 作用:要求客户端进行身份认证。
- 403 Forbidden:
- 场景:客户端已通过认证,但没有访问特定资源的权限。比如,企业内部系统中,普通员工用户已登录但访问只有管理员权限的资源时,会收到 403 Forbidden。
- 作用:告知客户端没有访问权限。
- 404 Not Found:
- 场景:服务器无法找到客户端请求的资源。可能是资源不存在、URL 拼写错误或资源已删除。这是常见的客户端错误状态码,如用户输入错误网址或请求已删除页面时会收到此状态码。
- 作用:告诉客户端请求的资源不存在。
- 400 Bad Request:
-
5xx(服务器错误状态码)
- 500 Internal Server Error:
- 场景:服务器在处理请求时遇到内部错误,通常是服务器代码问题。例如,服务器端应用程序代码出现未捕获的异常,导致无法正常处理请求时,返回 500 状态码。
- 作用:表明服务器出现故障,需要检查服务器端代码或配置。
- 501 Not Implemented:
- 场景:服务器不支持客户端请求的功能。如客户端使用新的或不常见的 HTTP 方法(如自定义方法)请求资源,服务器返回 501 Not Implemented。
- 作用:告知客户端服务器无法处理该请求方式。
- 502 Bad Gateway:
- 场景:服务器作为网关或代理,从上游服务器收到无效响应。例如,在使用代理服务器或负载均衡器时,后端服务器返回错误或无法正确响应,代理服务器可能返回 502 Bad Gateway。
- 作用:提示上游服务器出现问题。
- 503 Service Unavailable:
- 场景:服务器目前无法处理请求,可能是过载、维护或其他临时故障。如网站流量高峰时期,服务器资源耗尽无法处理新请求,或服务器进行计划维护、突发故障修复期间会返回此状态码。
- 作用:让客户端知道服务器暂时无法服务,可稍后再试。
- 500 Internal Server Error: