本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
问题描述
批量删除操作请求中缺少签名信息。
问题原因
您发起了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>
解决方案
携带签名信息发起删除请求。
确保请求中包含签名信息。
通过手动计算签名的方式将签名信息填入Authorization请求头。具体操作,请参见Authorization字段计算的方法。
通过SDK发起删除请求,免除手动签名的过程。
确保签名使用的AccessKey拥有删除Object的权限。
具体操作,请参见Bucket ACL和Object ACL。
(不推荐)不携带签名信息发起请求。
如果您是Bucket拥有者,您可以将待删除Object的ACL设置为公共读写(public-read-write)权限,这样可以在没有签名信息的情况下发起请求。
Object ACL设置为public-read-write,则互联网上任何用户都可以对该Object进行访问,并且向该Object写入数据。这有可能造成您数据的外泄以及费用激增,若被人恶意写入违法信息还可能会侵害您的合法权益。除特殊场景外,不建议您将Object ACL配置为公共读写权限。
相关文档
该文章对您有帮助吗?
- 本页导读 (1)
- 问题描述
- 问题原因
- 问题示例
- 解决方案
- 相关文档