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 IDAccessKey Secret。详情请参见创建AccessKey

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

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-8Base64编码的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时间197011号开始的秒数),用于标识该URL的超时时间。

Query string authentication requires the Signature, Expires and OSSAccessKeyId parameters

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

  • 解决方案:URL签名必须至少包含Signature、ExpiresOSSAccessKeyId参数。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

  • 问题原因:访问Bucket时使用的Endpoint不正确。

  • 解决方案:确保使用正确的Endpoint访问Bucket。例如Bucket所在地域为oss-cn-hangzhou,则外网Endpointoss-cn-hangzhou.aliyuncs.com。关于Endpoint的更多信息,请参见通过IPv6协议访问OSS

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

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

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

You do not have read permission on this object

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

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

You do not have write acl permission on this object

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

  • 解决方案:联系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

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

  • 解决方案:使用临时访问密钥(AccessKeyIdAccessKeySecret)向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-KMSOSS数据进行加密前,请先开通KMS服务。详情请参见开通密钥管理服务

NonStandardHostForbidden

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

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

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

  • 解决方案:使用标准的域名格式访问OSS资源。详情请参见通过IPv6协议访问OSS

PermanentRedirect

当访问Bucket时使用的EndpointBucket实际所在地域的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.comEndpoint地址发起请求,则出现该报错。

  • 解决方案:确认请求的Endpoint地址与Bucket实际的Endpoint地址一致。例如需要访问青岛和杭州两个节点的Bucket,建议创建多个ossclient,并在ossclient中添加oss-cn-hangzhou.aliyuncs.comoss-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表示设备系统时区是东八区。

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

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

        +0800

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

SecondLevelDomainForbidden

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

Please use virtual hosted style to access

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

  • 解决方案:通过外网访问OSS服务时,以URL的形式表示访问的OSS资源。OSSURL结构为<Schema>://<Bucket>.<外网Endpoint>/<Object> 。其中Schema包含HTTP或者HTTPS,Bucket表示存储空间名称,外网EndpointBucket所在数据中心供外网访问的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 IDAccessKey Secret是否填写正确。

      可以使用AccessKey IDAccessKey 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

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

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