开发者社区> 问答> 正文

关于Object操作之如何实现GetObjectACL?

Get Object ACL用来获取某个Bucket下的某个Object的访问权限。

请求语法GET /ObjectName?acl HTTP/1.1
Host: BucketName.oss-cn-hangzhou.aliyuncs.com
Date: GMT Date
Authorization: SignatureValue





响应元素(Response Elements)

名称描述
AccessControlList存储ACL信息的容器 类型:容器 父节点:AccessControlPolicy
AccessControlPolicy保存Get Object ACL结果的容器 类型:容器 父节点:None
DisplayNameBucket拥有者的名称.。(目前和ID一致) 类型:字符串 父节点:AccessControlPolicy.Owner
GrantObject的ACL权限。 类型:枚举字符串 有效值:private,public-read,public-read-write 父节点:AccessControlPolicy.AccessControlList
IDBucket拥有者的用户ID 类型:字符串 父节点:AccessControlPolicy.Owner
Owner保存Bucket拥有者信息的容器。 类型:容器 父节点:AccessControlPolicy


细节分析

  1. 只有Bucket的拥有者才能使用GetObjectACL这个接口来获取该Bucket下某个Object的ACL,非Bucket Owner调用该接口时,返回403 Forbidden消息。错误码:AccessDenied,提示You do not have read acl permission on this object.
  2. 如果从来没有对某个Object设置过ACL,则调用GetObjectACL时,OSS返回的ObjectACL会是default,表明该Object ACL遵循Bucket ACL。即:如果Bucket是private的,则该object也是private的;如果该object是public-read-write的,则该object也是public-read-write的。


示例


[backcolor=transparent]请求示例: GET /test-object?acl HTTP/1.1
Host: oss-example.oss-cn-hangzhou.aliyuncs.com
Date: Wed, 29 Apr 2015 05:21:12 GMT
Authorization: OSS qn6qrrqxo2oawuk53otfj byc:CTkuxpLAi4XZ+WwIfNm0FmgbrQ0=


[backcolor=transparent]返回示例: HTTP/1.1 200 OK
x-oss-request-id: 559CC9BDC755F95A64485981
Date: Wed, 29 Apr 2015 05:21:12 GMT
Content-Length: 253
Content-Tupe: application/xml
Connection: keep-alive
Server: AliyunOSS

<?xml version="1.0" ?>
<AccessControlPolicy>
    <Owner>
        <ID>00220120222</ID>
        <DisplayName>00220120222</DisplayName>
    </Owner>
    <AccessControlList>
        <Grant>public-read </Grant>
    </AccessControlList>
</AccessControlPolicy>

展开
收起
青衫无名 2017-10-20 11:27:23 1855 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
建立联系方法之一 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载