

喜讯:国内、香港、海外云服务器租用特惠活动,2核/4G/10M仅需31元每月,点击抢购>>>
点击这里注册天翼云特邀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是否允许。 规则中的每个 AllowedHeader最多可以包含一个 * 通配符字符。例如, 类型:字符串 父节点: CORSRule | 否 |
MaxAgeSeconds | 指定浏览器对特定资源的预检(OPTIONS)请求返回结果的缓存时间,单位为秒。通过缓存响应,在需要重复原始请求时,浏览器无需向 OOS 发送预检请求。 一个CORSRule最多包含一个MaxAgeSeconds元素。 类型: Integer 父节点: CORSRule 取值:大于等于-1的整数。-1表示禁用缓存。 | 否 |
ExposeHeader | 指定客户应用程序(例如,JavaScript 类型:字符串 父节点: 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>
推荐:TOP云智能建站优惠活动,仅880元即可搭建一个后台管理五端合一的智能网站(PC网站、手机网站、百度智能小程序、微信小程序、支付宝小程序),独享百度搜索SEO优势资源,让你的网站不仅有颜值有排面,更有排名,可以实实在在为您带来效益,请点击进入TOP云智能建站>>>,或咨询在线客服了解详情。


湘公网安备43019002001857号
备案号:
客服1