首页 / 科技 / 正文

415 unsupported media type(Http 状态码)

放大字体  缩小字体 来源:治疗附睾炎的药物 2026-04-15 13:33  浏览次数:5

HTTP 状态码(HTTP Status Code)状态码是服务器用来告诉客户端“请求处理得怎么样了”的一种标准方式。它们是由三位数字组成,配合一段简短的文本描述(Reason Phrase)来表达具体含义。

一、分类概览

我们可以通过下表快速建立认知框架:

类别

范围

语义

归责方

典型场景

1xx

100-199

信息响应

临时

服务器说:“收到头了,请继续发。”

2xx

200-299

成功

正常

请求成功,万事大吉。

3xx

300-399

重定向

跳转

“你要找的东西搬家了,请去别处。”

4xx

400-499

客户端错误

你错

请求格式不对,或者你没权限。

5xx

500-599

服务器错误

服错

服务器崩了,或者代码有 bug。

核心原则(错误归属原则):在排查问题时,如果看到 4xx,通常意味着问题出在客户端(请求语法、参数、权限);如果看到 5xx,则铁定是服务端(服务器、数据库、代码逻辑)出了故障。

二、状态码分类详解

以下状态码由 RFC 2616定义。你可以在RFC 7231中找到更新后的规范。

1️⃣ section 10 of RFC 2616链接:

https://datatracker.ietf.org/doc/html/rfc2616#section-10


2️⃣ section-6 of RFC 7231链接:

https://datatracker.ietf.org/doc/html/rfc7231#section-6


2.1 信息响应 (1xx)

  • 100 Continue(继续)这个临时响应表明客户端应该继续发送请求,或者如果请求已经完成则忽略该响应。
  • 101 Switching Protocols(切换协议)此代码是作为对客户端Upgrade请求头的响应发送的,表明服务器正在切换到的协议。
  • 102 Processing(正在处理)(已弃用)此代码曾用于 WebDAV 上下文中,表示服务器已收到请求,但在响应时没有可用状态。
  • 103 Early Hints(早期提示)此状态码主要用于与link头配合,让用户代理在服务器准备响应时开始预加载资源,或者预连接到页面需要资源的源站。

2.2 成功响应 (2xx)

  • 200 OK(确定)请求成功。"成功"的结果和含义取决于 HTTP 方法:
  • 201 Created(已创建)请求成功,因此创建了一个新资源。这通常是POST请求或某些PUT请求后发送的响应。
  • 202 Accepted(已接受)请求已被接收但尚未采取行动。这是非承诺性的,因为在 HTTP 中无法稍后发送异步响应来指示请求的结果。它旨在用于另一个进程或服务器处理请求或进行批处理的情况。
  • 203 Non-Authoritative Information(非权威信息)此响应代码意味着返回的元数据与源服务器上的不完全相同,而是从本地或第三方副本中收集的。这主要用于镜像或备份其他资源的情况。除特定情况外,首选200 OK响应。
  • 204 No Content(无内容)此请求没有要发送的内容,但头信息很有用。用户代理可能会使用新的头信息更新其缓存的此资源头。
  • 205 Reset Content(重置内容)告诉用户代理重置发送此请求的文档。
  • 206 Partial Content(部分内容)此响应代码用于响应客户端请求资源的一部分或几部分的range请求。
  • 207 Multi-Status(多状态) (WebDAV)传达有关多个资源的信息,用于可能适用多种状态码的情况。
  • 208 Already Reported(已报告) (WebDAV)用于dav:propstat响应元素内部,以避免重复枚举同一集合的多个绑定的内部成员。
  • 226 IM Used (HTTP Delta 编码)服务器已履行对该资源的GET请求,响应是应用于当前实例的一个或多个实例操作的结果表示。

2.3 重定向消息 (3xx)

  • 300 Multiple Choices(多种选择)在由代理驱动的内容协商中,请求有多个可能的响应,用户代理或用户应选择其中一个。客户端自动选择其中一个响应没有标准化的方法,因此很少使用。
  • 301 Moved Permanently(永久移动)请求资源的 URL 已永久更改。新的 URL 在响应中给出。
  • 302 Found(已找到)此响应代码意味着请求资源的 URI 已暂时更改。将来可能会对 URI 进行进一步更改,因此客户端应在将来的请求中使用相同的 URI。
  • 303 See Other(参阅其他)服务器发送此响应以指示客户端使用GET请求在另一个 URI 上获取请求的资源。
  • 304 Not Modified(未修改)这用于缓存目的。它告诉客户端响应未被修改,因此客户端可以继续使用相同的缓存版本的响应。
  • 305 Use Proxy(使用代理)(已弃用)在 HTTP 规范的先前版本中定义,以指示必须通过代理访问请求的响应。由于对带内代理配置的安全担忧,它已被弃用。
  • 306 unused(未使用)此响应代码不再使用;但已保留。它在 HTTP/1.1 规范的先前版本中使用过。
  • 307 Temporary Redirect(临时重定向)服务器发送此响应以指示客户端使用与先前请求中相同的方法在另一个 URI 上获取请求的资源。这具有与302 Found响应代码相同的语义,但例外情况是用户代理必须不更改 HTTP 方法:如果在第一个请求中使用了POST,则在重定向请求中必须使用POST。
  • 308 Permanent Redirect(永久重定向)这意味着资源现在永久位于Location响应头指定的另一个 URI 处。这具有与301 Moved PermanentlyHTTP 响应代码相同的语义,但例外情况是用户代理必须不更改 HTTP 方法:如果在第一个请求中使用了POST,则在第二个请求中必须使用POST。

2.4 客户端错误响应 (4xx)

  • 400 Bad Request(错误请求)服务器无法或不会处理请求,因为存在被认为是客户端错误的问题(例如,错误的请求语法、无效的请求消息帧或欺骗性的请求路由)。
  • 401 Unauthorized(未授权)虽然 HTTP 标准指定为 "unauthorized",但从语义上讲,此响应意味着 "unauthenticated"。即,客户端必须对自己进行身份验证才能获得请求的响应。
  • 402 Payment Required(需要付款)此代码的最初目的是用于数字支付系统,但此状态码很少使用,且不存在标准约定。
  • 403 Forbidden(禁止)客户端没有访问内容的权限;即,它未被授权,因此服务器拒绝提供请求的资源。与401 Unauthorized不同,服务器知道客户端的身份。
  • 404 Not Found(未找到)服务器无法找到请求的资源。在浏览器中,这意味着 URL 无法识别。在 API 中,这也可能意味着端点有效但资源本身不存在。服务器也可能发送此响应而不是403 Forbidden以向未经授权的客户端隐藏资源的存在。此响应码可能是最著名的,因为它在 Web 上频繁出现。
  • 405 Method Not Allowed(方法不允许)请求方法是服务器已知的,但不被目标资源支持。例如,API 可能不允许对资源进行DELETE,或完全不允许TRACE方法。
  • 406 Not Acceptable(不可接受)当 Web 服务器在执行服务器驱动的内容协商后,未找到符合用户代理给定条件的任何内容时,会发送此响应。
  • 407 Proxy Authentication Required(需要代理身份验证)这与401 Unauthorized类似,但需要由代理进行身份验证。
  • 408 Request Timeout(请求超时)此响应在一些服务器上的空闲连接上发送,即使客户端之前没有请求。这意味着服务器希望关闭此未使用的连接。由于一些浏览器使用 HTTP 预连接机制来加速浏览,此响应的使用更加频繁。一些服务器可能会在不发送此消息的情况下关闭连接。
  • 409 Conflict(冲突)当请求与服务器的当前状态冲突时发送此响应。在 WebDAV 远程 Web 创作中,409响应是发送给客户端的错误,以便用户可能能够解决冲突并重新提交请求。
  • 410 Gone(已消失)当请求的内容已从服务器永久删除且没有转发地址时发送此响应。客户端应删除其缓存和指向该资源的链接。HTTP 规范打算将此状态码用于 "限时、促销服务"。API 不必感到被迫使用此状态码来指示已删除的资源。
  • 411 Length Required(需要长度服务器拒绝了请求,因为未定义Content-Length头字段且服务器需要它。
  • 412 Precondition Failed(前提条件失败)在条件请求中,客户端已在头中指示服务器不满足的前提条件。
  • 413 Content Too Large(内容过大)请求主体大于服务器定义的限制。服务器可能关闭连接或返回Retry-After头字段。
  • 414 URI Too Long(URI 过长)客户端请求的 URI 长于服务器愿意解释的长度。
  • 415 Unsupported Media Type(不支持的媒体类型)请求数据的媒体格式不受服务器支持,因此服务器正在拒绝该请求。
  • 416 Range Not Satisfiable(范围无法满足)请求中Range头字段指定的范围无法实现。范围可能在目标资源数据的大小之外。
  • 417 Expectation Failed(预期失败)此响应代码意味着服务器无法满足Expect请求头字段指示的预期。
  • 418 I'm a teapot(我是茶壶)服务器拒绝尝试用茶壶冲泡咖啡。
  • 421 Misdirected Request(错误定向请求)请求是针对无法产生响应的服务器的。如果服务器未配置为对请求 URI 中包含的方案和权限的组合产生响应,则可以发送此消息。
  • 422 Unprocessable Content(无法处理的内容) (WebDAV)请求格式良好,但由于语义错误无法被遵循。
  • 423 Locked(已锁定) (WebDAV)正在访问的资源已被锁定。
  • 424 Failed Dependency(依赖失败) (WebDAV)请求失败是由于先前请求的失败。
  • 425 Too Early(过早)(实验性)表示服务器不愿意冒险处理可能被重放的请求。
  • 426 Upgrade Required(需要升级)服务器拒绝使用当前协议执行请求,但在客户端升级到不同协议后可能会这样做。服务器在 426 响应中发送Upgrade头以指示所需的协议。
  • 428 Precondition Required(需要前提条件)源服务器要求请求是有条件的。此响应旨在防止 "丢失更新" 问题,即客户端获取资源状态,修改它并将其PUT回服务器,而与此同时第三方修改了服务器上的状态,导致冲突。
  • 429 Too Many Requests(请求过多)用户在给定时间内发送了过多的请求(速率限制)。
  • 431 Request Header Fields Too Large(请求头字段过大)服务器不愿意处理请求,因为其头字段太大。在减小请求头字段的大小后,可以重新提交请求。
  • 451 Unavailable For Legal Reasons(因法律原因不可用)用户代理请求了无法合法提供的资源,例如政府审查的网页。

2.5 服务器错误响应 (5xx)

  • 500 Internal Server Error(内部服务器错误)服务器遇到了不知道如何处理的情况。此错误是通用的,表示服务器无法找到更合适的5XX状态码进行响应。
  • 501 Not Implemented(未实现)请求方法不受服务器支持,无法处理。服务器必须支持(因此不得返回此代码)的唯一方法是GET和HEAD。
  • 502 Bad Gateway(错误网关)这个错误响应意味着服务器在充当网关以获取处理请求所需的响应时,收到了无效响应。
  • 503 Service Unavailable(服务不可用)服务器尚未准备好处理请求。常见原因包括服务器因维护而关闭或过载。请注意,应随此响应发送解释问题的友好页面。此响应应用于临时条件,并且Retry-AfterHTTP 头应(如果可能)包含服务恢复的估计时间。Web 管理员还必须注意与此响应一起发送的缓存相关头,因为这些临时条件响应通常不应被缓存。
  • 504 Gateway Timeout(网关超时)当服务器充当网关且无法及时获得响应时,会给出此错误响应。
  • 505 HTTP Version Not Supported(不支持的 HTTP 版本)请求中使用的 HTTP 版本不受服务器支持。
  • 506 Variant Also Negotiates(变体也协商)服务器存在内部配置错误:在内容协商期间,选择的变体被配置为参与内容协商本身,这在创建响应时导致循环引用。
  • 507 Insufficient Storage(存储空间不足) (WebDAV)无法在资源上执行该方法,因为服务器无法存储成功完成请求所需的表示。
  • 508 Loop Detected(检测到循环) (WebDAV)服务器在处理请求时检测到无限循环。
  • 510 Not Extended(未扩展)客户端请求声明了一个应用于处理请求的 HTTP 扩展 (RFC 2774),但该扩展不受支持。
  • 511 Network Authentication Required(需要网络身份验证)表示客户端需要进行身份验证才能获得网络访问权限。

三、重点辨析

整理了一个对比表格,区分几个容易混淆的状态码:

状态码对比

区别说明

301 vs 302

301 是永久搬家

,以后都去新地址;302 是临时出门,以后还得回老地址。

401 vs 403

401 是没带钥匙

(未认证),带了钥匙可能就能进;403 是带了钥匙但没权限(认证了但被拒绝)。

404 vs 410

404 是找不到

(可能是拼写错误也可能是没了);410 是明确告诉你已删除(Gone),搜索引擎会更快地将其从索引中移除。

200 vs 204

200 有数据

返回在正文中;204 只有响应头,正文为空。

四、实战排错指南

当你遇到一个网页打不开,或者 App 报错时,如何利用状态码快速定位问题?

1. 看首位数字定大方向

  • 5xx:如果是公司内部系统,直接找后端开发人员查日志;如果是外部服务,只能等对方修复。
  • 4xx:先看是不是自己 URL 写错了(404),或者是登录态过期了(401)。
  • 3xx:如果出现重定向循环(A跳B,B又跳回A),浏览器会报错,这时需要检查服务器的重定向配置。

2. 开发者工具 (DevTools)

在浏览器中按F12,打开 Network(网络)标签页:

  • 你可以看到每一个请求的状态码。
  • 如果是 400 或 500,点击该请求,查看Response标签页,服务器通常会在返回的 JSON 或 HTML 中给出具体的错误原因(如 "Missing parameter")。

3. 常用调试命令

你可以使用curl命令行工具来测试状态码:

# 仅获取响应头(可以看到状态码)curl -I https://www.example.com# 测试特定状态码(很多测试网站支持)curl -I https://httpbin.org/status/404

五、总结

HTTP 状态码是互联网通信的基石语言。掌握它们,你就拥有了与服务器“对话”的能力。

  • 200是朋友,代表一切顺利。
  • 404是路人,告诉你地址不对。
  • 500是敌人,代表服务器内部混乱。
打赏
0相关评论
热门搜索排行
精彩图片
友情链接
声明:本站信息均由用户注册后自行发布,本站不承担任何法律责任。如有侵权请告知立立即做删除处理。
违法不良信息举报邮箱:115904045
头条快讯网 版权所有
中国互联网举报中心