上云无忧 > 文档中心 > 天翼云对象存储(OOS经典版)I型HTTP REST接口PUT Bucket cors
对象存储
天翼云对象存储(OOS经典版)I型HTTP REST接口PUT Bucket cors

文档简介:
跨域资源共享 (Cross-Origin Resource Sharing,CORS) 定义了客户端 Web 应用程序在一个域中与另一个域中的资源进行交互的方式,是浏览器出于安全考虑而设置的一个限制,即同源策略。例如,当来自于A网站的页面中的JavaScript代码希望访问B网站的时候,浏览器会拒绝该访问,因为A、B两个网站是属于不同的域。
*产品来源:中国电信天翼云。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

PUT Bucket cors


跨域资源共享 (Cross-Origin Resource Sharing,CORS) 定义了客户端 Web 应用程序在一个域中与另一个域中的资源进行交互的方式,是浏览器出于安全考虑而设置的一个限制,即同源策略。例如,当来自于A网站的页面中的JavaScript代码希望访问B网站的时候,浏览器会拒绝该访问,因为A、B两个网站是属于不同的域。

通过 CORS ,客户可以构建丰富的客户端 Web 应用程序,同时可以选择性地允许跨域访问OOS 资源。

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

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

²场景2:假设用户在名为website 的 bucket中托管网站,网站的endpoint是 /span>

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

请求语法

PUT /?cors   HTTP/1.1

Host:   bucketname.oos.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个字符。                

类型:String                

父节点: CORSRule                

                

AllowedMethod                

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

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

父节点:CORSRule                

                

AllowedOrigin                

允许跨域的源。最多包含一个 * 通配符。比如:/span>                

用户也可以只指定 * 表示允许所有源跨域访问。                

类型: String                

父节点: CORSRule                

                

AllowedHeader                

控制在预检OPTIONS请求中Access-Control-Request-Headers头中指定的header是否允许。Access-Control-Request-Headers 中的每个请求头名称,必须在规则中有匹配的条目。规则中的每个AllowedHeader最多可以包含一个 * 通配符字符。例如,<AllowedHeader>x-amz-*</AllowedHeader>                

类型: String                

父节点: CORSRule                

                

MaxAgeSeconds                

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

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

类型: Integer (秒)                

父节点: CORSRule                

                

ExposeHeader                

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

类型: String                

父节点: CORSRule                

                

请求示例

第一个规则允许来自 /span>

第二个规则允许与第一个规则具有相同的跨源请求,但第二个规则应用于另一个源 /span>

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

PUT   /?cors HTTP/1.1

Host:   examplebucket.oos.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>/AllowedOrigin>

 

     <AllowedMethod>PUT</AllowedMethod>

     <AllowedMethod>POST</AllowedMethod>

   <AllowedMethod>DELETE</AllowedMethod>

 

     <AllowedHeader>*</AllowedHeader>

 </CORSRule>

 <CORSRule>

     <AllowedOrigin>/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:   BDC4B83DF5096BBE

Date:   Mon, 21 Aug 2017 17:54:50 GMT

Server:CTYUN

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

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

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

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

相似文档
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部