HTTP状态码:15个常见的状态码详解

HTTP状态码:15个常见的状态码详解
最新回答
巷陌繁花

2020-11-03 02:55:39

HTTP状态码是服务器对客户端请求的响应分类标识,掌握常见状态码能提升调试效率、优化用户体验并促进团队协作。以下是15个核心状态码的分类详解

一、信息响应(100–199):请求已接收,处理中
  • 100 Continue客户端上传大文件前,先发送Expect: 100-continue头,服务器返回此状态码表示允许继续发送主体。示例场景:上传视频时避免无效传输。

  • 101 Switching Protocols协议升级(如HTTP→WebSocket),响应头包含Upgrade: websocket。示例场景:实时聊天应用建立WebSocket连接。

  • 103 Early Hints主响应未准备好时,通过Link头预加载资源(如CSS/JS),提升首屏加载速度。示例场景:电商网站提前加载商品图片。

二、成功响应(200–299):请求成功处理
  • 200 OK通用成功响应,不同HTTP方法含义略有差异:

    GET:返回资源数据(如JSON)。

    POST:返回操作结果(如创建成功信息)。

    HEAD:仅返回响应头。示例:{"id": 123, "name": "mCell"}。

  • 201 Created资源创建成功,响应体或Location头返回新资源地址。示例:Location: /projects/456。

  • 202 Accepted请求已接受但未处理完成(异步任务),返回任务ID和状态查询URL。示例:{"taskId": "abc123", "statusUrl": "/tasks/abc123/status"}。

  • 204 No Content操作成功但无返回内容,常用于PUT/DELETE请求。示例:更新用户信息后不返回数据。

  • 206 Partial Content支持断点续传或分块下载,通过Range头指定字节范围。示例:Range: bytes=0-999,响应头包含Content-Range。

三、重定向(300–399):需客户端进一步操作
  • 301 Moved Permanently资源永久迁移,SEO会更新索引指向新URL。示例:网站域名变更后重定向到新域名。

  • 302 Found临时重定向,浏览器自动跳转但不更新收藏或搜索索引。示例:促销活动页面临时迁移。

  • 303 See Other对POST请求返回GET确认页(如订单提交后的支付页面)。示例:Location: /order/789/confirmation。

  • 304 Not Modified缓存协商命中,客户端可直接使用本地缓存。调试提示:需注意浏览器缓存可能导致修改未生效。

四、客户端错误(400–499):请求包含错误
  • 400 Bad Request参数格式错误、JSON语法不合法或必填字段缺失。示例:请求体缺少username字段。

  • 401 Unauthorized未认证或令牌过期,需重新登录。响应头:WWW-Authenticate: Bearer realm="example"。

  • 403 Forbidden已认证但无权限访问资源。示例:普通用户尝试访问管理员页面。

  • 404 Not Found请求地址不存在,可自定义404页面提升体验。示例:访问已删除的商品详情页。

  • 405 Method Not Allowed客户端使用了不被允许的HTTP方法(如对只读接口发送POST请求)。示例:对GET接口发送PUT请求。

  • 429 Too Many Requests请求频率超过限制,需等待Retry-After指定的秒数。优化建议:全局拦截器统一处理限流逻辑。

五、服务器错误(500–599):服务器未完成请求
  • 500 Internal Server Error通用服务器错误,需查看日志定位问题。示例:数据库连接失败或代码异常。

  • 502 Bad Gateway网关(如Nginx)上游服务无响应或返回错误。排查方向:检查后端服务是否存活。

  • 503 Service Unavailable服务临时维护或过载,可返回Retry-After提示恢复时间。示例:服务器宕机时的维护页面。

  • 504 Gateway Timeout网关等待响应超时(如后端处理时间过长)。优化建议:调整超时时间或优化后端性能。

  • 505 HTTP Version Not Supported客户端使用的HTTP版本不被服务器支持。示例:客户端强制使用HTTP/1.0但服务器仅支持HTTP/2。

总结与建议
  • 优先记忆高频状态码:200/201/204、301/302、400/401/403/404/429、500/502/503/504。
  • 按场景选择状态码:例如用202表示异步任务、429限制请求频率。
  • 结合日志与监控:状态码仅是表面信息,需配合日志和链路追踪快速定位问题。

掌握HTTP状态码能显著提升接口设计的优雅性、调试效率及团队协作流畅度,而非单纯应对面试。