HTTP状态码

更新时间:
复制 MD 格式

HTTP状态码由IETFRFC 9110中定义、由IANA统一维护注册表。阿里云OpenAPI通常遵循该规范。

阿里云OpenAPI的状态码约定

阿里云OpenAPI通常遵循本文描述的HTTP状态码规范:以2xx表示调用成功,以4xx表示调用方问题(参数不合法、身份认证失败、权限不足、超出配额等),以5xx表示服务端问题。调用出错时,响应体中一般还会给出CodeMessage字段提供更细粒度的错误信息,以及用于唯一标识本次调用的RequestId

说明

状态码的具体语义和触发条件可能因云产品而异。调用OpenAPI时,请以该产品当前的 API 参考文档为准。

状态码的构成与分类

状态码是一个三位整数,用于描述请求的处理结果和响应的语义。有效取值范围是100~599。首位数字定义响应的类别,后两位不承担分类作用。

类别

含义

1xx(信息性)

请求已收到,处理继续进行。这是临时响应,一次请求可以先收到零个或多个1xx响应,之后才收到唯一的最终响应。

2xx(成功)

请求已被成功接收、理解并接受。

3xx(重定向)

需要客户端采取进一步操作才能完成请求。

4xx(客户端错误)

请求存在语法问题或无法被满足,问题通常出在调用方。

5xx(服务端错误)

服务端未能完成一个表面上有效的请求,问题出在服务端。

状态码明细

下表按类别列出各状态码的标准语义,以及定义该状态码的标准文档。

1xx 信息性响应

1xx响应在首部区结束时即终止,不能携带响应体。由于HTTP/1.0未定义1xx,服务端不得向HTTP/1.0客户端发送1xx响应。

状态码

标准名称

含义

定义来源

100

Continue

继续。请求的起始部分已被接收且尚未被拒绝,服务端愿意接收请求体。客户端应继续发送请求体,并丢弃该临时响应。

RFC 9110

101

Switching Protocols

切换协议。服务端同意客户端通过Upgrade首部提出的协议切换请求,并在响应中用Upgrade首部指明切换后生效的协议。

RFC 9110

102

Processing

处理中。WebDAV扩展定义,现已废弃,不建议在新设计中使用。

RFC 2518

103

Early Hints

早期提示。在最终响应之前先返回部分首部(通常是Link),供客户端提前预加载资源。

RFC 8297

2xx 成功

状态码

标准名称

含义

定义来源

200

OK

成功。请求已成功处理,响应体的内容取决于请求方法:GET返回目标资源的表示,POST返回操作状态或结果,PUTDELETE返回操作状态,OPTIONS返回目标资源的通信选项。

RFC 9110

201

Created

已创建。请求已完成,并创建了一个或多个新资源。主资源由响应的Location首部标识;未返回Location时,即为请求的目标URI。

RFC 9110

202

Accepted

已接受。请求已被接受处理,但处理尚未完成,最终也可能不被执行。HTTP没有为异步操作补发状态码的机制,因此响应体通常会指向一个可查询进度的状态资源。

RFC 9110

203

Non-Authoritative Information

非权威信息。请求成功,但响应体已被中间的转换代理修改,与源服务器的200响应内容不同。

RFC 9110

204

No Content

无内容。请求已成功处理,且没有额外内容需要在响应体中返回。元数据仍可通过响应首部传递。

RFC 9110

205

Reset Content

重置内容。请求已成功处理,客户端应重置引发该请求的文档视图,例如清空表单。

RFC 9110

206

Partial Content

部分内容。服务端成功响应了带Range首部的范围请求,仅返回目标资源的一个或多个片段。常用于断点续传和大文件分片下载。

RFC 9110

207

Multi-Status

多状态。WebDAV扩展定义,响应体中携带多个子操作各自的状态。

RFC 4918

208

Already Reported

已报告。WebDAV绑定扩展定义,用于避免在同一响应中重复枚举同一资源。

RFC 5842

226

IM Used

已应用差量编码。服务端已对目标资源应用一个或多个差量编码操作,返回的是差量结果而非完整资源。

RFC 3229

3xx 重定向

301、302、307、308都表示资源位于另一个URI,区别在于是否永久以及是否允许改变请求方法。历史原因导致客户端在处理301302时可能把POST改写成GET;如果不希望发生这种改写,应改用308307。

状态码

标准名称

含义

定义来源

300

Multiple Choices

多种选择。目标资源有多个可选表示,需要由客户端或用户从中选择一个。

RFC 9110

301

Moved Permanently

永久移动。目标资源已分配新的永久URI,后续引用都应改用新URI。服务端应在Location首部给出新URI。

RFC 9110

302

Found

已找到。目标资源临时位于另一个URI。由于重定向可能随时变化,客户端后续请求仍应使用原URI。

RFC 9110

303

See Other

参见其他。服务端把客户端引导至另一个资源以间接回应本次请求。客户端应对Location指向的URI发起GETHEAD请求,并把结果作为本次请求的答案。新URI与原目标URI不等价。

RFC 9110

304

Not Modified

未修改。条件GETHEAD请求的前置条件求值为假,说明客户端已持有有效的资源表示,服务端无需重复传输,客户端可直接使用本地缓存。该响应不能携带响应体。

RFC 9110

305

Use Proxy

使用代理。已废弃,不得在新实现中使用。

RFC 9110

306

(Unused)

未使用。曾在早期版本中定义,现已不再使用,该码保留占位。

RFC 9110

307

Temporary Redirect

临时重定向。目标资源临时位于另一个URI,且客户端在自动重定向时不得改变请求方法。

RFC 9110

308

Permanent Redirect

永久重定向。语义与301相同,但要求客户端在自动重定向时保持原请求方法。该状态码定义于2014年,比同类状态码晚,部分老旧实现可能无法识别。

RFC 9110

4xx 客户端错误

除响应HEAD请求外,服务端应在响应体中说明错误情况以及该错误是临时的还是永久的。这类状态码适用于任何请求方法。

状态码

标准名称

含义

定义来源

400

Bad Request

请求有误。服务端认为请求存在客户端错误而无法处理,例如请求语法错误、报文分帧无效或请求路由具有欺骗性。

RFC 9110

401

Unauthorized

未认证。请求缺少目标资源所需的有效身份凭据。服务端必须返回WWW-Authenticate首部,说明可用的认证方式。如果请求已带凭据,则表示这些凭据被拒绝。

RFC 9110

402

Payment Required

需要付费。标准保留状态码,语义留待未来定义。

RFC 9110

403

Forbidden

禁止访问。服务端理解该请求但拒绝执行。如果请求已提供凭据,说明服务端认为这些凭据的权限不足,客户端不应换用同一凭据自动重试。

RFC 9110

404

Not Found

未找到。源服务器未找到目标资源的当前表示,或不愿透露该资源是否存在。

RFC 9110

405

Method Not Allowed

方法不允许。目标资源不支持本次请求使用的方法。服务端必须返回Allow首部,列出该资源支持的方法。

RFC 9110

406

Not Acceptable

无可接受表示。目标资源没有符合请求中内容协商首部要求的表示形式。

RFC 9110

407

Proxy Authentication Required

需要代理认证。语义与401类似,但要求客户端向代理而非源服务器提供凭据。

RFC 9110

408

Request Timeout

请求超时。服务端在其愿意等待的时间内未收到完整请求。

RFC 9110

409

Conflict

状态冲突。请求与目标资源的当前状态冲突,无法完成。

RFC 9110

410

Gone

已删除。目标资源在源服务器上不再可用,且这一状态可能是永久的。

RFC 9110

411

Length Required

需要内容长度。服务端要求请求携带Content-Length首部。

RFC 9110

412

Precondition Failed

前置条件失败。请求首部中的一个或多个前置条件在服务端求值为假。

RFC 9110

413

Content Too Large

请求体过大。请求体的大小超出服务端愿意或能够处理的上限。

RFC 9110

414

URI Too Long

URI过长。请求目标的URI长度超出服务端愿意解析的上限。

RFC 9110

415

Unsupported Media Type

媒体类型不支持。目标资源不支持请求体所使用的内容格式。

RFC 9110

416

Range Not Satisfiable

范围无法满足。Range首部指定的范围与目标资源的当前范围不匹配,或范围集合本身无效。

RFC 9110

417

Expectation Failed

期望失败。Expect首部中的期望无法被服务端满足。

RFC 9110

418

(Unused)

未使用。该码曾被一份非正式的协议草案占用,现保留占位,不得赋予新语义。

RFC 9110

421

Misdirected Request

请求投递错误。请求被发往一台无法对该URI的权威做出响应的服务器。

RFC 9110

422

Unprocessable Content

内容无法处理。请求体的媒体类型和语法都可被理解,但其中的语义指令无法被处理。

RFC 9110

423

Locked

资源已锁定。WebDAV扩展定义,目标资源处于锁定状态。

RFC 4918

424

Failed Dependency

依赖操作失败。WebDAV扩展定义,本次操作所依赖的另一个操作未能成功。

RFC 4918

425

Too Early

过早。服务端不愿处理在TLS早期数据中重放的请求,客户端应在握手完成后重试。

RFC 8470

426

Upgrade Required

需要升级协议。服务端拒绝用当前协议处理该请求,但在客户端升级协议后可能同意。响应必须包含Upgrade首部。

RFC 9110

428

Precondition Required

要求前置条件。服务端要求请求必须带前置条件,以避免并发更新相互覆盖。

RFC 6585

429

Too Many Requests

请求过多。客户端在给定时间内发送的请求数超过限制。响应中可能带Retry-After首部,指示建议的重试等待时间。

RFC 6585

431

Request Header Fields Too Large

请求首部过大。单个首部字段或首部整体的大小超出服务端处理上限。

RFC 6585

451

Unavailable For Legal Reasons

因法律原因不可用。服务端因收到法律要求而拒绝提供目标资源。

RFC 7725

5xx 服务端错误

状态码

标准名称

含义

定义来源

500

Internal Server Error

服务端内部错误。服务端遇到意外情况,导致无法完成请求。

RFC 9110

501

Not Implemented

未实现。服务端不支持完成该请求所需的功能,通常表示无法识别请求方法。

RFC 9110

502

Bad Gateway

网关错误。作为网关或代理的服务端从上游收到了无效响应。

RFC 9110

503

Service Unavailable

服务不可用。服务端因临时过载或计划内维护,当前无法处理请求。这是一种临时状态,响应中可能带Retry-After首部。

RFC 9110

504

Gateway Timeout

网关超时。作为网关或代理的服务端未能在预期时间内从上游获得响应。

RFC 9110

505

HTTP Version Not Supported

HTTP版本不支持。服务端不支持或拒绝支持请求所用的HTTP主版本。

RFC 9110

506

Variant Also Negotiates

协商配置错误。透明内容协商扩展定义,服务端存在内部配置错误。

RFC 2295

507

Insufficient Storage

存储空间不足。WebDAV扩展定义,服务端无法为完成请求分配足够的存储空间。

RFC 4918

508

Loop Detected

检测到循环。WebDAV绑定扩展定义,服务端在处理请求时检测到无限循环。

RFC 5842

510

Not Extended

未扩展。原始定义已作废,该码在注册表中保留但语义不再适用。

RFC 2774

511

Network Authentication Required

需要网络认证。客户端需要先通过网络接入认证(例如公共Wi-Fi的门户页)才能访问网络。

RFC 6585

参考文档