PutBucketcors__跨域资源共享_API 参考_对象存储 OSS-阿里云
Put Bucket cors操作将在指定的bucket上设定一个跨域资源共享(CORS)的规则,如果原规则存在则覆盖原规则。
请求语法
PUT /?cors HTTP/1.1
Date: GMT Date
Content-Length:ContentLength
Content-Type: application/xml
Host: BucketName.oss-cn-hangzhou.aliyuncs.com
Authorization: SignatureValue
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration>
<CORSRule>
<AllowedOrigin>the origin you want allow CORS request from</AllowedOrigin>
<AllowedOrigin>…</AllowedOrigin>
<AllowedMethod>HTTP method</AllowedMethod>
<AllowedMethod>…</AllowedMethod>
<AllowedHeader> headers that allowed browser to send</AllowedHeader>
<AllowedHeader>…</AllowedHeader>
<ExposeHeader> headers in response that can access from client app</ExposeHeader>
<ExposeHeader>…</ExposeHeader>
<MaxAgeSeconds>time to cache pre-fight response</MaxAgeSeconds>
</CORSRule>
<CORSRule>
…
</CORSRule>
…
</CORSConfiguration >
请求元素(Request Elements)
名称 | 描述 | 是否必须 |
---|---|---|
CORSRule | CORS规则的容器,每个bucket最多允许10条规则 类型:容器 父节点:CORSConfiguration |
是 |
AllowedOrigin | 指定允许的跨域请求的来源,允许使用多个元素来指定多个允许的来源。 允许使用最多一个“*”通配符。如果指定为“*”则表示允许所有的来源的跨域请求。 类型:字符串 父节点:CORSRule |
是 |
AllowedMethod | 指定允许的跨域请求方法。 类型:枚举(GET,PUT,DELETE,POST,HEAD) 父节点:CORSRule |
是 |
AllowedHeader | 控制在OPTIONS预取指令中Access-Control-Request-Headers头中指定的header是否允许。在Access-Control-Request-Headers中指定的每个header都必须在AllowedHeader中有一条对应的项。允许使用最多一个“*”通配符 类型:字符串 父节点:CORSRule |
否 |
ExposeHeader | 指定允许用户从应用程序中访问的响应头(例如一个Javascript的XMLHttpRequest对象。)不允许使用“*”通配符。 类型:字符串 父节点:CORSRule |
否 |
MaxAgeSeconds | 指定浏览器对特定资源的预取(OPTIONS)请求返回结果的缓存时间,单位为秒。 一个CORSRule里面最多允许出现一个。 类型:整型 父节点:CORSRule |
否 |
CORSConfiguration | Bucket的CORS规则容器 类型:容器 父节点:无 |
是 |
细节分析
- 默认bucket是不开启CORS功能,所有的跨域请求的origin都不被允许。
- 为了在应用程序中使用CORS功能,比如从一个www.a.com的网址通过浏览器的XMLHttpRequest功能来访问OSS,需要通过本接口手动上传CORS规则来开启。该规则由XML文档来描述。
- 每个bucket的CORS设定是由多条CORS规则指定的,每个bucket最多允许10条规则,上传的XML文档最多允许16KB大小。
- 当OSS收到一个跨域请求(或者OPTIONS请求),会读取bucket对应的CORS规则,然后进行相应的权限检查。OSS会依次检查每一条规则,使用第一条匹配的规则来允许请求并返回对应的header。如果所有规则都匹配失败则不附加任何CORS相关的header。
- CORS规则匹配成功必须满足三个条件,首先,请求的Origin必须匹配一项AllowedOrigin项,其次,请求的方法(如GET,PUT等)或者OPTIONS请求的Access-Control-Request-Method头对应的方法必须匹配一项AllowedMethod项,最后,OPTIONS请求的Access-Control-Request-Headers头包含的每个header都必须匹配一项AllowedHeader项。
- 如果用户上传了Content-MD5请求头,OSS会计算body的Content-MD5并检查一致性,如果不一致,将返回InvalidDigest错误码。
示例
添加bucket跨域访问请求规则示例:
PUT /?cors HTTP/1.1
Host: oss-example.oss-cn-hangzhou.aliyuncs.com
Content-Length: 186
Date: Fri, 04 May 2012 03:21:12 GMT
Authorization: OSS qn6qrrqxo2oawuk53otfjbyc:KU5h8YMUC78M30dXqf3JxrTZHiA=
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration>
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>GET</AllowedMethod>
<AllowedHeader>Authorization</AllowedHeader>
</CORSRule>
<CORSRule>
<AllowedOrigin>https://www.a.com</AllowedOrigin>
<AllowedOrigin>https://www.b.com</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedHeader> Authorization</AllowedHeader>
<ExposeHeader>x-oss-test</ExposeHeader>
<ExposeHeader>x-oss-test1</ExposeHeader>
<MaxAgeSeconds>100</MaxAgeSeconds>
</CORSRule>
</CORSConfiguration >
返回示例:
HTTP/1.1 200 OK
x-oss-request-id: 50519080C4689A033D00235F
Date: Fri, 04 May 2012 03:21:12 GMT
Content-Length: 0
Connection: keep-alive
Server: AliyunOSS
最后更新:2016-11-23 17:16:08
上一篇:
ListParts__关于MultipartUpload的操作_API 参考_对象存储 OSS-阿里云
下一篇:
GetBucketcors__跨域资源共享_API 参考_对象存储 OSS-阿里云
设备状态__产品管理_控制台使用手册_阿里云物联网套件
设置读写权限__管理存储空间_控制台用户指南_对象存储 OSS-阿里云
LogicalOperator__DataType_API 参考_表格存储-阿里云
删除账号__账号管理_API 参考_云数据库 RDS 版-阿里云
Windows服务器无法远程登录提示“试图登录 但是网络登陆服务没有启动”__连接访问_远程桌面_Windows操作运维问题_云服务器 ECS-阿里云
HLS基础接口__Media-C-SDK_SDK 参考_对象存储 OSS-阿里云
获取访问者真实IP___常见接入问题_Web 应用防火墙-阿里云
云服务器 ECS 升级内存
快递_阿里云帮助中心-阿里云,领先的云计算服务提供商
获取区域和运营商列表__资源监控接口_API 手册_CDN-阿里云
相关内容
常见错误说明__附录_大数据计算服务-阿里云
发送短信接口__API使用手册_短信服务-阿里云
接口文档__Android_安全组件教程_移动安全-阿里云
运营商错误码(联通)__常见问题_短信服务-阿里云
设置短信模板__使用手册_短信服务-阿里云
OSS 权限问题及排查__常见错误及排除_最佳实践_对象存储 OSS-阿里云
消息通知__操作指南_批量计算-阿里云
设备端快速接入(MQTT)__快速开始_阿里云物联网套件-阿里云
查询API调用流量数据__API管理相关接口_API_API 网关-阿里云
使用STS访问__JavaScript-SDK_SDK 参考_对象存储 OSS-阿里云