本文介绍请求发出后,收到服务端返回的结果中包含的响应状态码和错误码。
请求返回的服务端状态码和提示信息如下所示。
状态码 | 说明 |
---|---|
2XX | 请求成功,服务端返回用户请求的数据。 |
3XX | 重定向相关请求,客户端需要采取其他操作才能完成请求。 |
4XX | 客户端的请求有错误,服务器没有进行新建或修改数据的操作。 |
5XX | 服务端发生错误,用户将无法判断发出的请求是否成功。 |
当客户端调用接口出错时,将不会返回结果数据。您可以根据每个接口返回的错误码和错误信息来定位相关问题。 当调用出错时,HTTP请求返回一个3XX、4XX或5XX的HTTP状态码。返回的消息体中是具体的错误代码及错误信息。
当错误发生时,返回的消息中会包含如下信息:
{ "Code" : "NoSuchKey", "Message" : "The resource you requested does not exist", "RequestId" : "4442587FB7D0A2F9", "HostId" : "", "Resource" : "/bucketName/objectName" }
REST错误消息元素及其对应的含义如下表所示。
名称 | 说明 |
---|---|
Code | 错误响应对应的HTTP消息返回码。错误代码是唯一标识错误条件的字符串。 |
Message | 错误响应消息中具体错误详细的英文描述。 |
RequestId | 请求返回的请求ID,可用于错误定位。 |
HostId | 返回该消息的服务端ID。 |
Resource | 该错误相关的桶或对象资源。 |
许多错误响应包含额外的结构化数据,便于开发人员理解和诊断编程错误。例如,如果您发送的Content-MD5报头带有与服务器上计算的摘要不匹配的REST PUT请求时,您将收到一个BadDigest错误。错误响应信息还包括我们计算的摘要和期望的摘要信息提示。在开发过程中,您可以使用此信息诊断错误。
在向TOS存储系统发送请求后,如果出现错误,在返回的响应体中会包含错误码和对应的描述信息。
错误码 | 描述 | HTTP状态码 | 处理措施 |
---|---|---|---|
PermanentRedirect | 尝试访问的桶必须使用指定的地址,请将以后的请求发送到这个地址。 | 301 Moved Permanently | 按照返回的重定向地址发送请求。 |
WebsiteRedirect | Website 请求缺少桶名。 | 301 Moved Permanently | 请求中携带桶名后重试。 |
TemporaryRedirect | 临时重定向,当 DNS 更新时,请求将被重定向到桶。 | 307 Moved Temporarily | 会自动重定向,也可以将请求发送到重定向地址。 |
CustomDomainAreadyExist | 配置了已存在的域。 | 400 Bad Request | 已经配置过了,不需要再配置。 |
CustomDomainNotExist | 删除不存在的域。 | 400 Bad Request | 未配置或已经删除,无需删除。 |
MalformedError | 请求中携带的 XML 格式不正确。 | 400 Bad Request | 使用正确的 XML 格式重试。 |
MetadataTooLarge | 元数据消息头超过了允许的最大元数据大小。 | 400 Bad Request | 减少元数据消息头。 |
MissingSecurityHeader | 请求缺少一个必须的头。 | 400 Bad Request | 提供必要的头域。 |
EntityTooLarge | 上传的对象大小超过允许的最大值。 | 400 Bad Request | 修改 POST 上传的 Policy 中的条件或者减少对象大小。 |
EntityTooSmall | 上传的对象大小超过允许的最小值。 | 400 Bad Request | 修改 POST 上传的 Policy 中的条件或者增加对象大小。 |
BadDigest | 客户端携带的 MD5 与服务端计算的 MD5 不一致。 | 400 Bad Request | 检查头域中携带的 MD5,是否与消息体计算出来的 MD5 一致。 |
IncompleteBody | 由于网络原因或其他问题导致请求体未接受完整。 | 400 Bad Request | 重新上传对象。 |
InvalidArgument | 参数格式错误。 | 400 Bad Request | 根据响应体中的错误提示信息进行修改。 |
InvalidBucket | 请求访问的桶已不存在。 | 400 Bad Request | 更换桶名。 |
BadDomainName | 非法的域名。 | 400 Bad Request | 检查域名,使用合法的域名。 |
BadRequest | 非法的请求参数。 | 400 Bad Request | 根据返回的错误消息体提示进行修改。 |
InvalidLocationConstraint | 创建桶时,指定的 Location 不合法或不存在。 | 400 Bad Request | 指定正确的 Location 创桶。 |
InvalidPart | 一个或多个指定的段无法找到。这些段可能没有上传,或者指定的 Entity Tag 与段的 Entity Tag 不一致。 | 400 Bad Request | 按照正确的段和 Entity Tag 合并段。 |
PartSizeSmall | 禁止合并小于规格的分段(最后一个分段除外)。 | 400 Bad Request | 更新不符合规格的分段。 |
InvalidPartOrder | 无效的段顺序。段列表必须按段号升序排列。 | 400 Bad Request | 按段号升序排列后重新合并。 |
IllegalLocationConstraintException | 在非默认 Region 中创桶,但未带 Location。 | 400 Bad Request | 请求发往默认 Region 创桶或带非默认 Region 的 Location 创桶。 |
InvalidRedirectLocation | 无效的重定向地址。 | 400 Bad Request | 按照响应体中消息提示,指定正确的地址。 |
InvalidRequest | 无效请求。 | 400 Bad Request | 根据返回的错误消息体提示进行修改。 |
InvalidRequestBody | 请求体无效,需要消息体的请求没有上传消息体。 | 400 Bad Request | 按照正确的格式上传消息体。 |
InvalidTargetBucketForLogging | Logging 操作中有无效的目标桶。 | 400 Bad Request | 对目标桶配置 ACL 权限后重试。 |
KeyTooLongError | 提供的 Key 过长。 | 400 Bad Request | 使用较短的 Key。 |
InvalidBucketName | 无效的桶名,超长或带不允许的特殊字符。 | 400 Bad Request | 更换桶名。 |
InvalidEncryptionAlgorithmError | 错误的加密算法。下载 SSE-C 加密的对象,携带的加密头域错误,导致不能解密。 | 400 Bad Request | 携带正确的加密头域下载对象。 |
MalformedLoggingStatus | Logging 的 XML 格式不正确。 | 400 Bad Request | 使用正确的 XML 格式重试。 |
MalformedPolicy | Bucket Policy 检查不通过。 | 400 Bad Request | 根据返回的错误消息体提示结合桶 Policy 的要求进行修改。 |
MalformedQuotaError | Quota 的 XML 格式不正确。 | 400 Bad Request | 使用正确的 XML 格式重试 |
MalformedXML | 当用户发送了一个配置项的错误格式的 XML 会出现这样的错误。 | 400 Bad Request | 使用正确的 XML 格式重试。 |
MaxMessageLengthExceeded | 拷贝对象,带请求消息体。 | 400 Bad Request | 拷贝对象不带消息体重试。 |
InvalidPolicyDocument | 表单中的内容与策略文档中指定的条件不一致。 | 400 Bad Request | 根据返回的错误消息体提示修改构造表单的 Policy 重试。 |
MissingRegion | 请求中缺少 Region 信息,且系统无默认 Region。 | 400 Bad Request | 请求中携带 Region 信息。 |
MissingRequestBodyError | 当用户发送一个空的 XML 文档作为请求时会发生。 | 400 Bad Request | 提供正确的 XML 文档。 |
MissingRequiredHeader | 请求中缺少必要的头域。 | 400 Bad Request | 提供必要的头域。 |
MalformedACLError | 提供的 XML 格式错误,或者不符合我们要求的格式。 | 400 Bad Request | 使用正确的 XML 格式重试。 |
TooManyBuckets | 用户拥有的桶的数量达到了系统的上限,并且请求试图创建一个新桶。 | 400 Bad Request | 删除部分桶后重试。 |
TooManyWrongSignature | 因高频错误请求被拒绝服务。 | 400 Bad Request | 更换正确的 Access Key 后重试。 |
UnexpectedContent | 该请求需要消息体而客户端没带,或该请求不需要消息体而客户端带了。 | 400 Bad Request | 根据说明重试。 |
InvalidCallbackArgument | 回调参数或自定义变量校验不通过。 | 400 Bad Request | 检查回调参数字段、自定义变量格式、是否 Header 和 Query 包含重复的回调参数或自定义变量。 |
AccessDenied | 没有相应的访问权限。 | 403 Forbidden | 检查配置的权限,是否支持当前操作。 |
InvalidAccessKeyId | Access Key 在系统中不存在。 | 403 Forbidden | 携带正确的 Access Key。 |
RequestTimeTooSkewed | 请求的时间与服务端的当前时间差异太大。 | 403 Forbidden | 检查客户端时间是否与当前时间相差太大。 |
SignatureDoesNotMatch | 请求中带的签名与系统计算得到的签名不一致。 | 403 Forbidden | 检查你的 Secret Key 和签名计算方法。 |
NoSuchBucket | 指定的桶不存在。 | 404 Not Found | 先创桶再操作。 |
NoSuchKey | 指定的 Key 不存在。 | 404 Not Found | 先上传对象。 |
NoSuchBucketPolicy | 桶 Policy 不存在。 | 404 Not Found | 先配置桶 Policy。 |
NoSuchUpload | 指定的多段上传不存在。Upload ID 不存在,或者多段上传已经终止或完成。 | 404 Not Found | 使用存在的段或重新初始化段。 |
NoSuchCORSConfiguration | CORS 配置不存在。 | 404 Not Found | 先配置 CORS。 |
NoSuchLifecycleConfiguration | 不存在 LifeCycle 配置。 | 404 Not Found | 先配置桶的 LifeCycle。 |
NoSuchVersion | 请求中指定的 Version ID 与现存的所有版本都不匹配。 | 404 Not Found | 使用正确的 Version ID。 |
NoSuchWebsiteConfiguration | 请求的 Website 不存在。 | 404 Not Found | 先配置 Website。 |
MethodNotAllowed | 指定的方法不允许操作在请求的资源上。 | 405 Method Not Allowed | 方法不允许。 |
RequestTimeout | 用户与 Server 之间的 Socket 连接在超时时间内没有进行读写操作。 | 408 Request Timeout | 检查网络后重试,或联系技术支持。 |
BucketAlreadyExists | 请求的桶名已经存在。桶的命名空间是系统中所有用户共用的,选择一个不同的桶名再重试一次。 | 409 Conflict | 更换桶名。 |
BucketNotEmpty | 用户尝试删除的桶不为空。 | 409 Conflict | 先删除桶中对象,然后再删桶。 |
BucketAlreadyOwnedByYou | 发起该请求的用户已经创建过了这个名字的桶,并拥有这个桶。 | 409 Conflict | 桶已存在,不需要再创桶了。 |
UpdateConflict | 并发更新同一个 Key 冲突 | 409 Conflict | 限制不要并发更新同一个 Key,或联系技术支持。 |
MissingContentLength | 必须要提供 HTTP 消息头中的 Content-Length 字段。 | 411 Length Required | 提供 Content-Length 消息头。 |
PreconditionFailed | 用户指定的先决条件中至少有一项没有包含。 | 412 Precondition Failed | 根据返回消息体中的 Condition 提示进行修改。 |
InvalidRange | 请求携带的 Range 不合法。 | 416 Client Requested Range Not Satisfiable | 携带正确的 Range 重试。 |
ExceedAccountQPSLimit | 超过账户 QPS 限制。 | 429 StatusTooManyRequests | 降低使用该账号做请求的总 QPS,或联系技术支持。 |
ExceedAccountRateLimit | 超过账户带宽限制。 | 429 StatusTooManyRequests | 降低使用该账号做请求的总带宽,或联系技术支持。 |
ExceedBucketQPSLimit | 超过桶 QPS 限制。 | 429 StatusTooManyRequests | 降低请求该桶的 QPS,或联系技术支持。 |
ExceedBucketRateLimit | 超过桶带宽限制。 | 429 StatusTooManyRequests | 降低请求该桶的带宽,或联系技术支持。 |
InternalError | 系统遇到内部错误,请重试。 | 500 Internal Server Error | 请联系技术支持。 |
ServiceNotImplemented | 请求的方法服务端没有实现。 | 501 Not Implemented | 当前不支持,请联系技术支持。 |
ServiceUnavailable | 服务器过载或者内部错误异常。 | 503 Service Unavailable | 等待一段时间后重试,或联系技术支持。 |
SlowDown | 请降低请求频率。 | 503 Service Unavailable | 请降低请求频率。 |