文档

0016-00000616

更新时间:
重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

问题描述

批量删除操作请求中缺少签名信息。

问题原因

您发起了DeleteMultipleObjects请求,但是删除Object的ACL为私有或公共读,而请求中未携带签名信息,导致请求失败。

问题示例

以下请求删除的Object的ACL为私有或公共读,但是请求中未携带签名信息(Authorization头)。

POST /?delete HTTP/1.1
Host: oss-example.oss-cn-hangzhou.aliyuncs.com
Date: Tue, 09 Apr 2019 06:09:34 GMT
Content-MD5: 2Tpk+dL/tGyuSA+YCEuSVg==
<?xml version="1.0" encoding="UTF-8"?>
<Delete> 
  <Quiet>false</Quiet>
  <Object> 
    <Key>abc.data</Key>
  </Object>
  <Object> 
    <Key>test.data</Key>
  </Object>
</Delete>

解决方案

  • 携带签名信息发起删除请求。

    1. 确保请求中包含签名信息。

      • 通过手动计算签名的方式将签名信息填入Authorization请求头。具体操作,请参见Authorization字段计算的方法

      • 通过SDK发起删除请求,免除手动签名的过程。

    2. 确保签名使用的AccessKey拥有删除Object的权限。

      具体操作,请参见Bucket ACLObject ACL

  • (不推荐)不携带签名信息发起请求。

    如果您是Bucket拥有者,您可以将待删除Object的ACL设置为公共读写(public-read-write)权限,这样可以在没有签名信息的情况下发起请求。

    警告

    Object ACL设置为public-read-write,则互联网上任何用户都可以对该Object进行访问,并且向该Object写入数据。这有可能造成您数据的外泄以及费用激增,若被人恶意写入违法信息还可能会侵害您的合法权益。除特殊场景外,不建议您将Object ACL配置为公共读写权限。

相关文档

  • 本页导读 (1)
文档反馈