相关文章推荐
英俊的哑铃  ·  Mysql ...·  2 年前    · 
403错误

HTTP 403 错误

OSS 返回 403 错误的原因和解决方案。

AbnormalBucketOwnerStatus

当目标 Bucket 的所属用户账户状态异常时,会返回此错误。

The status of the bucket owner is abnormal

  • 问题原因:暂未向目标 Bucket 的所属用户提供服务。

  • 解决方案:检查用户的阿里云账号是否已注销或因安全等原因被管控,确认是否因欠费原因被运营商暂停服务。

AccessDenied

当用户没有执行特定操作的权限时,会返回此错误。

Access denied by authorizer's policy

  • 问题原因:无权限执行相关操作。

  • 解决方案:临时访问凭证最终获取的权限是 步骤四 设置的角色权限和 步骤五 Policy 设置权限的交集。通过以下示例检查在这两个步骤中设置的权限交集。

    • 示例 1

      如下图所示,A 代表 RAM 角色的权限,B 代表通过 policy 参数设置的权限,C 代表临时访问凭证最终的权限。

      1.jpg

    • 示例 2

      如下图所示,A 代表 RAM 角色权限,B 代表通过 policy 参数设置的权限,且 policy 参数设置的权限是 RAM 角色权限的子集。因此,B 代表临时访问凭证的最终权限。

      2.jpg

Access denied by bucket policy

Access denied by VPC endpoint policy

  • 问题原因:客户端所在 VPC 添加了 Policy 授权策略,导致未授权的 Bucket 无法在 VPC 环境内访问。

  • 解决方案:检查客户端所在 VPC 配置的 Policy 授权策略。

AccessDenied

  • 问题原因:没有相应的访问权限。

  • 解决方案:

    • 确认使用了正确的 AccessKey ID AccessKey Secret。详情请参见 创建 AccessKey

    • 确认 RAM 用户是否拥有 Bucket Object 相关操作权限。

Anonymous access is forbidden for this operation

Anonymous user has no right to access this bucket

Anonymous user has no right to access this object

Invalid according to Policy: Policy Condition failed: " + RelatedUnit; //XXX

  • 问题原因:Policy 表单域中指定的 Conditions 无效。

  • 解决方案:确保在 Policy 表单域中指定有效的 Conditions。关于 Policy 表单域中支持的 Conditions 以及 Conditions 匹配方式详情,请参见 附录:Post Policy

Invalid according to Policy: Policy Condition failed: ["eq", "$Content-Type", "image/png"]

  • 问题原因:上传的文件类型与指定的 Content-Type 类型不符。

  • 解决方案:Policy 中的 Content-Type 用于限制表单上传时的文件类型。如果 Content-Type 限制为 image/png,则仅支持上传 image/png 类型的文件。如需上传其他类型的文件,添加对应的 Content-Type 类型。关于常见的 Content-Type 类型列表,请参见 如何设置 Content-Type(MIME)?

Invalid according to Policy: Policy expired

  • 问题原因:PostObject 中的 Policy 表单域无效。

  • 解决方案:Post 请求的 Policy 表单域用于验证请求的合法性。Policy 为一段经过 UTF-8 Base64 编码的 JSON 文本,声明了 Post 请求必须满足的条件。Post Policy 格式如下:

    { 
      "expiration": "2014-12-01T12:00:00.000Z",
      "conditions": [
        {"bucket": "johnsmith" },
        ["starts-with", "$key", "user/eric/"]
    }

    关于 Policy 中支持的 Conditions 详情,请参见 附录:Post Policy

Invalid date (should be seconds since epoch)

  • 问题原因:请求的时间戳无效。

  • 解决方案:Expires 参数的值是一个 Unix time(自 UTC 时间 1970 1 1 号开始的秒数),用于标识该 URL 的超时时间。

Query string authentication requires the Signature, Expires and OSSAccessKeyId parameters

  • 问题原因:URL 签名缺少必要参数。

  • 解决方案:URL 签名必须至少包含 Signature、Expires OSSAccessKeyId 参数。URL 签名示例为 http://oss-example.oss-cn-hangzhou.aliyuncs.com/oss-api.pdf?OSSAccessKeyId=nz2pc56s936**9l&Expires=1141889120&Signature=vjbyPxybdZaNmGa%2ByT272YEAiv**** 。关于 URL 签名的详情,请参见 URL 中包含签名

Request has expired

Target object does not reside in the same data center as source object

  • 问题原因:不支持跨地域拷贝文件。

  • 解决方案:仅支持拷贝同一地域下相同或不同存储空间(Bucket)之间的文件(Object)。详情请参见 CopyObject

The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint

This request is forbidden by kms

  • 问题原因:没有 KMS 使用权限。

  • 解决方案:确保对指定的 CMK ID 具有使用权限。详情请参见 服务端加密

You are denied by bucket referer policy

  • 问题原因:防盗链校验失败。

  • 解决方案:通过设置 Referer 白名单以及是否允许空 Referer,限制仅白名单中的域名可以访问 Bucket 内的资源。详情请参见 设置防盗链

You do not have read acl permission on this object

  • 问题原因:没有该 Object ACL 读取权限。

  • 解决方案:联系 Object 拥有者授予 GetObjectACL 的权限。

You do not have read permission on this object

  • 问题原因:没有该 Object 的读取权限。

  • 解决方案:联系 Object 拥有者授予对 Object 的读取权限。

You do not have write acl permission on this object

  • 问题原因:没有该 Object ACL 写入权限。

  • 解决方案:联系 Object 拥有者授予 PutObjectACL 的权限。

You do not have write permission on this object

  • 问题原因:没有该 Object 的写入权限。

  • 解决方案:联系 Object 拥有者授予对 Object 的写入权限。

You have no right to access this object

You have no right to access this object because of bucket acl

  • 问题原因:没有该 Object 的访问权限。

  • 解决方案:授予访问者 OSS 相关访问权限,例如 PutObject、GetObject、AppendObject 等。详情请参见 RAM Policy 常见示例

AccessForbidden

CORS 请求不被允许或其他访问限制时,会返回此错误。

CORSResponse: This CORS request is not allowed. This is usually because the evalution of Origin, request method / Access-Control-Request-Method or Access-Control-Requet-Headers are not whitelisted by the resource's CORS spec

AccessKeyIdAndSecurityTokenNotMatch

当提供的 AccessKey ID 和安全令牌不匹配时,会返回此错误。

The OSS access key id and security token you provided does not match

BucketDisable

Bucket 因安全原因被禁用时,会返回此错误。

BucketDisable

  • 问题原因:Bucket 因安全原因被禁用。

  • 解决方案:检查账号是否已欠费,或联系技术支持进行安全受限核查。

BucketNotBelongTo

当用户尝试访问不属于自己的 Bucket 时,会返回此错误。

The bucket you access does not belong to you

  • 问题原因:当前用户不是目标 Bucket 的拥有者。

  • 解决方案:仅 Bucket 拥有者有权限执行此操作。

CnameDenied

当域名绑定操作被拒绝时,会返回此错误。

The cname belongs to another user

  • 问题原因:该域名已绑定至其他 Bucket。

  • 解决方案:更换域名或通过验证域名所有权强制绑定域名,验证域名所有权会解除域名与其他 Bucket 的绑定关系。请参见 绑定自定义域名 进行排查。

ImageDamage

当上传或处理的图片文件损坏无法正常识别时,会返回此错误。

The image file may be damaged

  • 问题原因:图片文件存在部分信息丢失或损坏,导致系统无法正常识别或处理。

  • 解决方案:确保源文件完整性,如发现文件损坏请重新上传本地文件。

InvalidAccessKeyId

当提供的 AccessKey ID 格式不正确、不存在或处于禁用状态时,会返回此错误。

The OSS Access Key Id contains non-acceptable characters, which accepts only alphanumeric characters[0-9a-zA-Z] and several special characters[._=]

  • 问题原因:输入的 AccessKey ID 包含不支持的字符。

  • 解决方案:重新输入 RAM 用户或阿里云账号的正确 AccessKey ID。更多信息,请参见 创建 AccessKey

The OSS Access Key Id you provided does not exist in our records

  • 问题原因:临时访问凭证已过期并自动失效。

  • 解决方案:使用临时访问密钥(AccessKeyId AccessKeySecret)向 App 服务器申请新的临时访问凭证。具体操作,请参见 获取临时访问凭证

The OSS Access Key Id you provided is disabled

  • 问题原因:AccessKey ID 处于禁用状态。

  • 解决方案:重新启用 AccessKey。

InvalidObjectState

Object 处于不支持当前操作的状态时,会返回此错误。

The operation is not valid for the object's state

  • 问题原因:下载归档类型 Object 时,以下两种情况会导致 Object 状态无效错误。

    • 未提交 RestoreObject 请求或上一次提交 RestoreObject 已超时。

    • 已提交 RestoreObject 请求,但数据恢复操作尚未完成。

  • 解决方案:请参见 RestoreObject 进行排查。

InvalidSecurityToken

当提供的安全令牌无效时,会返回此错误。

The security token you provided is invalid

KmsInDebt

当阿里云账户处于欠费状态导致 KMS 服务访问被拒绝时,会返回此错误。

Current user is indebted

  • 问题原因:阿里云账户进入欠费状态时,对密钥管理服务 KMS(Key Management Service)的访问会被拒绝。

  • 解决方案:确保阿里云账户不欠费以正常使用 KMS 服务。

KmsInDebtOverdue

KMS 服务欠费已逾期时,会返回此错误。

Current user is indebted Overdue

  • 问题原因:KMS 服务欠费已逾期。

  • 解决方案:及时续费以正常使用 KMS 服务。

KmsUbsmsInvalidBid

当请求者未开通 KMS 服务时,会返回此错误。

Your account partner does not have KMS Service

  • 问题原因:请求者未开通 KMS 服务。

  • 解决方案:使用 SSE-KMS OSS 数据进行加密前,请先开通 KMS 服务。详情请参见 开通密钥管理服务

NonStandardHostForbidden

当使用的 Host 不符合 OSS 标准域名格式时,会返回此错误。

Your host is invalid. Please use Open Storage Service standard host

PermanentRedirect

当访问 Bucket 时使用的 Endpoint Bucket 实际所在地域的 Endpoint 不一致时,会返回此错误。

The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint

  • 问题原因:通过 SDK 访问 OSS 中的 Bucket 时,未指定 Endpoint 或指定的 Endpoint 有误。例如创建的 Bucket 位于青岛地域,使用了默认配置的 oss-cn-hangzhou.aliyuncs.com Endpoint 地址发起请求,则出现该报错。

  • 解决方案:确认请求的 Endpoint 地址与 Bucket 实际的 Endpoint 地址一致。例如需要访问青岛和杭州两个节点的 Bucket,建议创建多个 ossclient,并在 ossclient 中添加 oss-cn-hangzhou.aliyuncs.com oss-cn-qingdao.aliyuncs.com 两个 Endpoint。

RequestTimeTooSkewed

当请求发起时间与 OSS 服务器当前时间相差过大时,会返回此错误。

The difference between the request time and the current time is too large

  • 问题原因:请求发起的时间超过 OSS 服务器当前时间 15 分钟。

  • 解决方案:检查发送请求设备的系统时间,并根据时区调整到正确时间。

    发送请求的机器或设备的系统时间,调整标准如下:

    • OSS 的系统时间采用 GMT 时间,设备的系统时间需要调整到 GMT 时间,或与其相对应的时区时间。GMT 是零时区的区时,即世界标准时间。

      • Windows 系统查看时区的方法:单击 控制面板 > 时钟、语言和区域 > 设置日期和时间

        例如,时区栏的+08:00 表示设备系统时区是东八区。

      • Linux Unix 系统查看时区的方法:执行 date -R 查看时间和时区。

        下图中的+0800 表示设备系统时区是东八区。

        +0800

    • OSS 支持在多个地域使用。每个地域都使用 GMT 时间,发送请求的设备系统时间也是 GMT 时间。

SecondLevelDomainForbidden

当使用二级域名访问 OSS 或域名格式不正确时,会返回此错误。

Please use virtual hosted style to access

  • 问题原因:Host 格式错误。

  • 解决方案:通过外网访问 OSS 服务时,以 URL 的形式表示访问的 OSS 资源。OSS URL 结构为 <Schema>://<Bucket>.<外网 Endpoint>/<Object> 。其中 Schema 包含 HTTP 或者 HTTPS,Bucket 表示存储空间名称,外网 Endpoint Bucket 所在数据中心供外网访问的 Endpoint,Object 填写上传到 OSS 上的文件的访问路径。

    例如 Region 为华东 1(杭州),Bucket 名称为 examplebucket,Object 访问路径为 destfolder/example.txt ,则外网访问地址为 https://examplebucket.oss-cn-hangzhou.aliyuncs.com/destfolder/example.txt

The bucket you are attempting to access must be addressed using OSS third level domain

  • 问题原因:Bucket 的请求域名不为三级域名。

  • 解决方案:针对 OSS 的网络请求,除了 GetService (ListBuckets)API 以外,其他所有请求的域名均由带有指定 Bucket 信息的三级域名组成。其中,访问域名结构为 BucketName.Endpoint ,BucketName 为存储空间名称,Endpoint 为存储空间对应的地域域名。例如 https://examplebucket.oss-cn-hangzhou.aliyuncs.com

SecurityTokenExpired

当提供的安全令牌已过期时,会返回此错误。

The security token you provided has expired

  • 问题原因:临时访问凭证已过期。

  • 解决方案:重新请求 STS 服务获取临时访问凭证。

SecurityTokenNotSupported

当在不支持 STS Token 的地域或接口中使用安全令牌时,会返回此错误。

Security token is not supported in this region

  • 问题原因:当前地域暂不支持使用 STS Token。

  • 解决方案:关于哪些地域支持使用 STS Token 的详情,请参见 接入地址

This interface does not support security token

  • 问题原因:当前接口暂不允许通过临时访问凭证权限进行调用。

  • 解决方案:STS Token 仅适用于临时授权给特定用户访问 OSS 资源。如需将 Bucket 开放给他人访问,请参见 访问控制概述 选择适用的授权机制。

SignatureDoesNotMatch

当客户端提供的签名与服务端计算的签名不一致时,会返回此错误。

The request signature we calculated does not match the signature you provided

  • 问题原因:使用 API 接口或 SDK 访问 OSS 时,客户端需要携带签名信息以供 OSS 服务端进行身份认证。如果服务器返回如上所示的响应,说明请求中提供的签名与服务端计算的不一致,导致请求被拒绝。

  • 解决方案:请参考以下步骤进行排查。

    1. 确认签名所用的 AccessKey ID AccessKey Secret 是否填写正确。

      可以使用 AccessKey ID AccessKey Secret 登录 ossbrowser 来验证正确性。具体步骤,请参见 安装 ossbrowser 2.0 登录 ossbrowser 2.0

    2. 检查签名算法是否正确。

      OSS 提供两种携带签名的请求方式,分别为 Header 中包含签名 URL 中包含签名 。关于这两种签名方式的算法说明如下:

      • Header 中包含签名

        StringToSign = VERB + "\n"
                      + Content-MD5 + "\n" 
                      + Content-Type + "\n" 
                      + Date + "\n" 
                      + CanonicalizedOSSHeaders
                      + CanonicalizedResource
        Signature = base64(hmac-sha1(AccessKeySecret, StringToSign)
      • URL 中包含签名

        StringToSign = VERB + "\n" 
                      + CONTENT-MD5 + "\n" 
                      + CONTENT-TYPE + "\n" 
                      + EXPIRES + "\n" 
                      + CanonicalizedOSSHeaders
                      + CanonicalizedResource
        Signature = urlencode(base64(hmac-sha1(AccessKeySecret, StringToSign)))

      如果业务场景允许,推荐使用 SDK 访问 OSS,免去手动计算签名的过程。具体步骤,请参见 使用阿里云 SDK 发起请求概述

    3. 比对响应体中的 StringToSign 字段与发起请求的内容是否存在差异。

      StringToSign 字段表示待签字符串,即签名算法中需要使用 AccessKey Secret 进行加密的内容。

      请求示例如下:

      PUT /bucket/abc?acl
      Date: Wed, 24 May 2023 02:12:30 GMT
      Authorization: OSS qn6q**************:77Dv****************
      x-oss-abc: mymeta

      以上请求计算得到的待签字符串应为:

      PUT\n\n\nWed, 24 May 2023 02:12:30 GMT\nx-oss-abc:mymeta\n/bucket/abc?acl

    关于签名错误常见场景的更多信息,请参见 0002-00000040

TransferAccelerationDisabled

当在不支持传输加速功能的地域使用传输加速时,会返回此错误。

Transfer acceleration is disabled

  • 问题原因:当前地域不支持传输加速功能。

  • 解决方案:请联系 技术支持 解决该问题。

UserDisable

当用户账号被禁用或未开通 OSS 服务时,会返回此错误。

UserDisable

  • 问题原因:

    • 账号欠费或者由于安全原因,账号被禁用。

    • 未开通 OSS 服务。

  • 解决方案:

    • 检查账号是否已欠费,或联系技术支持进行安全受限核查。

    • 开通 OSS 服务。

WORMConfigurationLocked

当合规保留策略锁定后尝试删除策略时,会返回此错误。

The WORM Configuration is locked

  • 问题原因:合规保留策略锁定后试图删除策略。

  • 解决方案:保留策略已提交锁定后,不允许删除此策略,且无法缩短策略保护周期,仅可以延长保护周期。详情请参见 保留策略