186
云计算
负载均衡
产品简介
产品价格
快速入门
用户指南
实践操作
常见问题
购买指南
云服务器
产品简介
计费规则
购买指导
控制台使用指南
常见问题
云数据库
产品简介
计费规则
购买指导
快速入门
连接实例
控制台使用指南
对象存储
产品简介
控制台使用指南
程序员百科
Python
天翼云对象存储(经典版)I型API参考-PUT Bucket CORS

产品推荐:

1、安全稳定的云服务器租用,2核/2G/5M仅37元,点击抢购>>>

2、高防物理服务器20核/16G/50M/500G防御仅350元,点击抢购>>>

3、百度智能建站(五合一网站)仅880元/年,点击抢购>>> 模板建站(PC+手机站)仅480元/年,点击抢购>>>

4、阿里云服务器2核2G3M仅99元/年、2核4G5M仅199元/年,新老同享,点击抢购>>> 

5、腾讯云服务器2核2G4M仅99元/年、新老同享,点击抢购>>>   



点击这里注册天翼云特邀VIP帐号,立即体验天翼云对象存储>>>


天翼云对象存储(经典版)I型API参考-PUT Bucket CORS


此操作用来设置Bucket的跨域资源共享(Cross-Origin Resource Sharing,CORS)。浏览器限制脚本内发起跨源HTTP请求,即同源策略。例如,当来自于A网站的页面中的JavaScript代码希望访问B网站的时候,浏览器会拒绝该访问,因为A、B两个网站是属于不同的域。通过配置CORS,可以解决不同域相互访问的问题,CORS定义了客户端Web应用程序在一个域中与另一个域中的资源进行交互的方式。

以下是有关使用CORS的示例场景:

  •  场景1比如用户的网站www.example.com,后端使用了OOS。在web应用中提供了使用JavaScript实现的上传对象功能,但是在该web应用中,只能向www.example.com发送请求,向其他网站发送的请求都会被浏览器拒绝。这样就导致用户上传的数据必须从www.example.com中转。如果设置了跨域访问的话,用户就可以直接上传到OOS,而无需从www.example.com中转。 

  • 场景2:假设用户在名为website的bucket中托管网站,网站的endpoint是http://website.oos-website-cn.oos-xx.ctyunapi.cn。现在,用户想要使用网页上的 JavaScript (存储在此bucket中),通过OOS API endpoint oos-xx.ctyunapi.cn向bucket发送GET 和 PUT 请求。浏览器通常会阻止 JavaScript 发送这些请求,但借助 CORS,用户可以配置bucket支持来自website.oos-website-cn.oos-xx.ctyunapi.cn 的跨域请求。

设置bucket的跨域请求。如果配置已经存在,OOS会覆盖它。只有根用户和拥有PUT Bucket CORS权限的子用户才能执行此操作,否则会返回403 AccessDenied错误。在配置跨域请求时,用户可以通过XML来配置允许跨域的源和HTTP方法。XML请求体不能超过64KiB。

OOS收到来自浏览器的预检请求后,它将为bucket评估CORS配置,并使用第一个与浏览器请求相匹配的CORSRule规则来实现跨域请求。要使规则实现匹配,必须满足以下条件:

  • 请求的Origin标头必须匹配一个AllowedOrigin 元素。

  • 请求方法(例如,GET 或 PUT),或者预检 OPTIONS 请求中的Access-Control-Request-Method请求头,必须是某个 AllowedMethod 元素。

  • 在预检请求中, Access-Control-Request-Headers 请求头中列出的每个请求头,必须匹配一个 AllowedHeader 元素。


请求语法

PUT   /?cors HTTP/1.1

Host: bucketname.oos-cn.ctyunapi.cn

Content-Length:   length

Date: date

Authorization:   authorization string

Content-MD5:   MD5

 

<CORSConfiguration>

      <CORSRule>

            <AllowedOrigin>Origin you want to allow cross-domain requests from</AllowedOrigin>

            <AllowedOrigin>...</AllowedOrigin>

            ...

            <AllowedMethod>HTTP method</AllowedMethod>

            <AllowedMethod>...</AllowedMethod>

            ...

            <MaxAgeSeconds>Time in seconds your browser to cache the pre-flight OPTIONS   response for a resource</MaxAgeSeconds>

            <AllowedHeader>Headers that you want the browser to be allowed to send</AllowedHeader>

            <AllowedHeader>...</AllowedHeader>

            ...

            <ExposeHeader>Headers in the response that you want accessible from client   application</ExposeHeader>

            <ExposeHeader>...</ExposeHeader>

            ...

      </CORSRule>

      <CORSRule>

            ...

      </CORSRule>

</CORSConfiguration>


请求参数

名称

描述

是否必须

CORSConfiguration

最多包含100个CORSRules元素的容器。

类型:容器

CORSRule

用户允许跨域的源和方法。

类型:容器

子节点: AllowedOrigin,   AllowedMethod, MaxAgeSeconds,ExposeHeader, ID.

父节点:   CORSConfiguration

ID

规则的唯一标示。最长255个字符。

类型:字符串

父节点:   CORSRule

AllowedMethod

允许跨域的HTTP方法。每个CORSRule应至少包含一个源和一个方法。

类型:   枚举 (GET, PUT, HEAD, POST, DELETE)

父节点:CORSRule

AllowedOrigin

允许跨域的源。每个CORSRule应至少包含一个源和一个方法。

可以包含通配符*,但最多只能包含一个,比如:http://*.example.com。用户也可以只指定 * 表示允许所有源跨域访问。

类型:字符串

父节点:   CORSRule

AllowedHeader

控制在预检OPTIONS请求中Access-Control-Request-Headers头中指定的header是否允许。Access-Control-Request-Headers 中的每个请求头名称,必须在规则中有匹配的条目。

规则中的每个 AllowedHeader最多可以包含一个 * 通配符字符。例如,<AllowedHeader>x-amz-*</AllowedHeader> 

类型:字符串

父节点:   CORSRule

MaxAgeSeconds

指定浏览器对特定资源的预检(OPTIONS)请求返回结果的缓存时间,单位为秒。通过缓存响应,在需要重复原始请求时,浏览器无需向 OOS 发送预检请求。

一个CORSRule最多包含一个MaxAgeSeconds元素。

类型: Integer

父节点: CORSRule

取值:大于等于-1的整数。-1表示禁用缓存。

ExposeHeader

指定客户应用程序(例如,JavaScript XMLHttpRequest对象)能够访问的响应头。

类型:字符串

父节点: CORSRule


请求示例

第一个规则允许来自https://www.example1.com源的跨源 PUT、POST和DELETE请求。该规则还通过Access-Control-Request-Headers标头允许预检OPTIONS请求中的所有标头。作为对任何预检 OPTIONS 请求的响应,OOS 将返回请求的任意请求头。

第二个规则允许与第一个规则具有相同的跨源请求,但第二个规则应用于另一个源 https://www.example2.com。

第三个规则允许来自所有源的跨源GET请求。“*”通配符字符是指所有的源。

PUT /?cors HTTP/1.1
Host: examplebucket.oos-cn.ctyunapi.cn
x-amz-date: Tue, 21 Aug 2012 17:54:50 GMT
Content-MD5: 8dYiLewFWZyGgV2Q5FNI4W==
Authorization:AWS fad0e782cd5132563e38:xQE0diMbLRepdf3YB+FIEXAMPLE=
Content-Length: 445
 
<CORSConfiguration>
 <CORSRule>
   <AllowedOrigin>http://www.example1.com</AllowedOrigin>
 
   <AllowedMethod>PUT</AllowedMethod>
   <AllowedMethod>POST</AllowedMethod>
   <AllowedMethod>DELETE</AllowedMethod>
 
   <AllowedHeader>*</AllowedHeader>
 </CORSRule>
 <CORSRule>
   <AllowedOrigin>http://www.example2.com</AllowedOrigin>
 
   <AllowedMethod>PUT</AllowedMethod>
   <AllowedMethod>POST</AllowedMethod>
   <AllowedMethod>DELETE</AllowedMethod>
 
   <AllowedHeader>*</AllowedHeader>
 </CORSRule>
 <CORSRule>
   <AllowedOrigin>*</AllowedOrigin>
   <AllowedMethod>GET</AllowedMethod>
 </CORSRule>
</CORSConfiguration>


响应示例

HTTP/1.1 200 OK
x-amz-request-id: 0CF038E9BCF63097
Date: Wed, 13 Dec 2017 19:14:42 GMT
Server: CTYUN
Content-Length: 280
 
<CORSConfiguration>
    <CORSRule>
        <AllowedOrigin>http://www.example.com</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
        <MaxAgeSeconds>3000</MaxAgeSec>
        <ExposeHeader>x-amz-server-side-encryption</ExposeHeader>
    </CORSRule>
</CORSConfiguration>


这条帮助是否解决了您的问题? 已解决 未解决

提交成功!非常感谢您的反馈,我们会继续努力做到更好! 很抱歉未能解决您的疑问。我们已收到您的反馈意见,同时会及时作出反馈处理!