计算机网络面试题——HTTP中常见的状态码有哪些?分别是什么含义?

111 阅读7分钟

Author : Cyan_RA9
Source : 【卡码笔记】网站
Question : HTTP中常见的状态码有哪些?分别是什么含义?

【简要回答】

  • 面试最高频的十个HTTP状态码,如下:
    1. 200OK,表示请求已被正确处理(如网页加载成功、API 成功返回数据)。
    2. 301Moved Permanently,表示资源永久重定向到新 URL(如网站更换域名,旧链接跳转)。
    3. 302Found,表示资源临时重定向到新 URL(如登录后跳转回原页面)。
    4. 304Not Modified,表示资源未修改,客户端直接使用本地缓存(缓存机制的核心状态码)。
    5. 400Bad Request,表示客户端请求格式错误(如参数缺失、JSON 语法错误)。
    6. 401Unauthorized,表示未认证(如未登录时访问需权限的接口)。
    7. 403Forbidden,表示无权限访问资源(如普通用户访问管理员接口)。
    8. 404Not Found,表示资源不存在(如 URL 路径错误、文件被删除)。
    9. 500Internal Server Error,表示服务器内部错误(如代码异常、数据库崩溃)。
    10. 503Service Unavailable,表示服务暂时不可用(如服务器维护、过载熔断)。

【详细回答】

一、2xx(成功类)

  1. 200
    • 定义OK,表示请求已被服务器正确处理;其中GET请求一般返回资源内容,而POST请求则可能返回操作结果或新资源链接。
    • 典型场景:访问网页成功加载(HTML 内容);API 返回 JSON 数据。

二、3xx(重定向类)

  1. 301
    • 定义Moved Permanently,表示请求的资源已永久重定向到新 URL,客户端应更新书签或链接;浏览器会缓存此重定向,后续请求直接访问新 URL。
    • 典型场景:网站更换域名(如 programmercarl.comnotes.kamacoder.com);HTTP 升级 HTTPS 的全局跳转。
  2. 302
    • 定义Found,表示资源临时重定向到新 URL,客户端后续请求可能仍然访问原来的 URL;浏览器默认对 302 使用 GET 方法重定向,即使原请求是 POST 类型。
    • 典型场景:登录后临时跳转到用户主页;OAuth 授权流程中的回调跳转。
  3. 304
    • 定义Not Modified,表示资源未修改,客户端可直接使用缓存副本;服务器不返回响应体,仅返回 304 状态码和缓存相关头部。
    • 典型场景:浏览器缓存验证(通过 If-Modified-Since 请求头);CDN 节点缓存有效性检查。

三、4xx(客户端错误类)

  1. 400
    • 定义Bad Request,客户端请求存在语法或参数错误,服务器无法处理;需结合响应体中的错误描述排查问题。
    • 典型场景:请求体 JSON 格式错误;缺少必填参数导致请求格式错误。
  2. 401
    • 定义Unauthorized,请求未提供有效身份凭证,需认证后重试。
    • 典型场景:未登录用户访问需要权限的接口;Token 过期或无效。
  3. 403
    • 定义Forbidden,客户端身份已认证,但无权访问目标资源;隐藏无权限资源时可能返回 404 替代。
    • 典型场景:普通用户尝试访问管理员接口;IP 地址被列入黑名单。
  4. 404
    • 定义Not Found,服务器未找到请求的资源;有可能是服务器故意隐藏资源存在性(如避免敏感信息泄露)。
    • 典型场景:URL 路径错误;资源已被删除(如用户访问已下架商品)。

四、5xx(服务器错误类)

  1. 500
    • 定义Internal Server Error服务器内部错误,无法完成请求;开发环境下应返回详细错误堆栈,生产环境则需隐藏敏感信息。
    • 典型场景:代码有未处理的异常(如空指针、数据库连接失败);服务器配置错误。
  2. 503
    • 定义Service Unavailable,服务器暂时无法处理请求(通常因过载或维护)。
    • 典型场景:服务器处于维护窗口期;高并发流量导致服务熔断(如秒杀活动)。

【知识拓展】

  • 高频HTTP状态码详解,如下图所示:
    HTTP_Status_Code.jpg

  • 更多HTTP状态码,如下表所示:

    状态码状态码英文名称中文描述
    100Continue继续。客户端应继续其请求
    101Switching Protocols切换协议。服务器根据客户端的请求切换协议(如升级到 WebSocket)
    200OK请求成功。一般用于 GET 与 POST 请求
    201Created已创建。成功请求并创建了新的资源
    202Accepted已接受。已接受请求但未处理完成(常用于异步任务)
    203Non-Authoritative Information非授权信息。返回的元信息来自副本而非原始服务器
    204No Content无内容。服务器成功处理但未返回内容(如 DELETE 请求)
    205Reset Content重置内容。客户端应重置文档视图(如清空表单)
    206Partial Content部分内容。服务器成功处理了部分 GET 请求(如断点续传)
    300Multiple Choices多种选择。资源有多个地址可选,需客户端选择
    301Moved Permanently永久移动。资源已永久重定向到新 URI(浏览器会缓存新地址)
    302Found临时移动。资源临时重定向到新 URI(后续请求仍用原地址)
    303See Other查看其他地址。强制客户端用 GET 方法访问新 URI(常用于 POST 后重定向)
    304Not Modified未修改。客户端缓存资源有效,无需重新传输
    305Use Proxy使用代理。请求必须通过代理访问(现代浏览器已弃用)
    306Unused已废弃(原设计用于后续请求的代理,现被 307/308 替代)
    307Temporary Redirect临时重定向。保持原请求方法重定向(如 POST 请求临时重定向)
    400Bad Request客户端请求语法错误,服务器无法理解
    401Unauthorized未认证。需提供有效身份凭证(如登录 Token)
    402Payment Required保留状态(实际用于支付场景,如 Stripe API 调用)
    403Forbidden禁止加粗访问。已认证但无权限访问资源
    404Not Found未找到。服务器无法根据请求找到资源
    405Method Not Allowed方法禁用。请求的 HTTP 方法不被允许(如用 GET 访问仅支持 POST 的接口)
    406Not Acceptable不可接受。服务器无法提供客户端要求的媒体类型(如只支持 JSON 但请求 XML)
    407Proxy Authentication Required代理认证要求。需通过代理服务器认证
    408Request Time-out请求超时。服务器等待客户端发送请求时间过长
    409Conflict冲突。请求与服务器当前状态冲突(如并发编辑资源版本冲突)
    410Gone已删除。资源永久不存在(与 404 不同,明确表示资源被主动删除)
    411Length Required需要有效长度。请求必须包含 Content-Length 头部
    412Precondition Failed前提条件失败。请求头中的条件不满足(如 If-Match 校验失败)
    413Request Entity Too Large请求实体过大。服务器拒绝处理(如上传文件超过限制)
    414Request-URI Too LargeURI 过长。请求的 URL 超过服务器限制(如 GET 参数过长)
    415Unsupported Media Type不支持的媒体类型。服务器无法处理请求附带的格式(如上传文件类型不被支持)
    416Requested range not satisfiable请求范围无效。客户端要求超出资源的可用范围(如请求文件末尾之外的数据)
    417Expectation Failed预期失败。服务器无法满足 Expect 请求头的要求(如 Expect: 100-continue 不被支持)
    500Internal Server Error服务器内部错误。代码异常或配置错误
    501Not Implemented未实现。服务器不支持请求的功能(如使用未启用的 HTTP 方法)
    502Bad Gateway网关错误。代理服务器从上游收到了无效响应(如后端服务崩溃)
    503Service Unavailable服务不可用。服务器过载或维护中(可通过 Retry-After 头指定重试时间)
    504Gateway Time-out网关超时。代理服务器未及时从上游获取响应(如后端服务响应超时)
    505HTTP Version not supported不支持的 HTTP 版本。服务器不支持请求中的协议版本(如请求 HTTP/3 但服务器仅支持 HTTP/1.1)