0%

HTTP常见状态码

HTTP 常见状态码详解

HTTP 状态码是服务器对客户端请求的处理结果的数字标识,通过三位数字的编码直观反映请求的状态(如成功、错误、重定向等)。理解状态码不仅能帮助开发者快速定位问题,还能优化用户体验(如根据状态码引导用户操作)。以下是对各类状态码的详细解析:

1XX 信息性状态码(临时响应)

1XX 状态码表示服务器已接收请求,正在进一步处理,需要客户端继续等待或配合。这类状态码很少直接暴露给用户,主要用于协议层面的中间交互。

状态码 含义 典型场景
100 Continue 服务器已接收请求头,允许客户端继续发送请求体 客户端发送大型数据(如文件上传)前,先发送请求头试探服务器是否接受,服务器返回 100 后客户端再发送主体
101 Switching Protocols 服务器同意切换到客户端请求的协议(如 HTTP/2、WebSocket) 客户端通过Upgrade首部请求升级协议(如Upgrade: websocket),服务器确认后返回 101 并切换协议

2XX 成功状态码

2XX 状态码表示客户端请求被服务器成功接收并处理,是最理想的响应结果。

状态码 含义 典型场景
200 OK 请求成功,服务器返回对应资源 普通的 GET 请求(如打开网页、获取 API 数据)
201 Created 请求成功且创建了新资源 POST 请求创建资源(如注册用户、发布文章),响应体通常包含新资源的详情
202 Accepted 请求已接收,但尚未处理完成 异步任务(如批量数据处理、邮件发送),服务器先确认接收,后续通过其他方式通知结果
204 No Content 请求成功,但无响应体 DELETE 请求删除资源(无需返回数据),或 PUT 请求更新资源后无需返回内容
206 Partial Content 服务器成功处理部分请求(范围请求) 客户端通过Range首部请求资源的部分内容(如断点续传、大文件分片下载),响应体包含指定范围的数据

3XX 重定向状态码

3XX 状态码表示客户端需要通过进一步操作(如跳转至新地址)才能完成请求,浏览器通常会自动处理重定向。

状态码 含义 典型场景 与类似状态码的区别
301 Moved Permanently 资源永久迁移到新 URI 网站域名更换(如old.com迁移到new.com),搜索引擎会更新索引,浏览器会缓存新地址 与 302 相比,301 是 “永久” 重定向,会更新书签和搜索引擎索引
302 Found 资源临时迁移到新 URI 临时活动页面跳转(如促销活动结束后会恢复原地址),浏览器不更新书签 实际使用中可能将 POST 请求转为 GET,不符合标准;307 则严格遵守方法不变
304 Not Modified 资源未修改,使用缓存 客户端请求的资源在缓存有效期内,服务器无需返回资源,直接告知使用本地缓存 配合If-Modified-SinceETag首部使用,减少重复传输,提升性能
307 Temporary Redirect 临时重定向(严格遵守请求方法) 临时跳转且需保持请求方法(如 POST 请求跳转后仍为 POST) 与 302 的区别:307 不会将 POST 转为 GET,适合需要保留方法的场景

4XX 客户端错误状态码

4XX 状态码表示请求存在错误(如语法错误、权限不足),导致服务器无法处理,责任在客户端。

状态码 含义 典型场景 解决思路
400 Bad Request 请求报文格式错误(如 JSON 语法错误) 客户端发送的参数格式有误(如 API 请求的 JSON 缺少必要字段) 检查请求参数格式,确保符合服务器要求
401 Unauthorized 请求需要身份认证 访问需要登录的页面或 API(如未登录时访问个人中心) 引导用户登录,或在请求中携带认证信息(如 Token)
403 Forbidden 服务器拒绝访问(认证通过但无权限) 普通用户尝试访问管理员页面,或 IP 被封禁 检查用户权限,确认是否在允许访问的范围内
404 Not Found 服务器找不到请求的资源 访问不存在的 URL(如输错网址、资源已删除但链接未更新) 检查 URL 是否正确,或跳转至 404 友好页面
405 Method Not Allowed 请求方法不支持 用 POST 访问仅支持 GET 的接口,或用 DELETE 访问只读资源 确认接口支持的方法(如通过 OPTIONS 请求查询),改用正确的方法
408 Request Timeout 请求超时 客户端发送请求过慢,或网络延迟过高 优化网络环境,减少请求数据量,或延长服务器超时时间
413 Request Entity Too Large 请求体过大 上传的文件超过服务器限制(如超过 100MB) 压缩文件大小,或分块上传
414 Request-URI Too Long 请求 URL 过长 GET 请求的参数过多(如拼接了大量查询条件) 将参数移至请求体(改用 POST),或简化参数

5XX 服务器错误状态码

5XX 状态码表示服务器在处理请求时发生内部错误,责任在服务器。

状态码 含义 典型场景 解决思路
500 Internal Server Error 服务器内部错误(如代码 bug) 服务器处理请求时抛出异常(如数据库连接失败、代码逻辑错误) 开发者检查服务器日志,修复代码或配置问题
502 Bad Gateway 网关收到上游服务器的无效响应 反向代理服务器(如 Nginx)无法连接后端应用服务器(如 Tomcat 崩溃) 检查后端服务是否正常运行,重启服务或修复网络
503 Service Unavailable 服务器暂时无法处理请求(如维护、超载) 网站高峰期服务器负载过高,或正在进行停机维护 等待服务器恢复,或通过负载均衡分散流量
504 Gateway Timeout 网关等待上游服务器响应超时 后端服务处理请求耗时过长(如复杂查询超时)

欢迎关注我的其它发布渠道

表情 | 预览
快来做第一个评论的人吧~
Powered By Valine
v1.3.10