全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

PUT Bucket CORS

最近更新时间:2023-08-28 14:25:14

描述

调用该接口可以为指定的Bucket设置跨域资源共享(CORS)规则。

注意事项

  • 如果该Bucket之前已经有CORS规则,新添加的规则将全部覆盖旧规则,请注意这一点以免误删。
  • 使用此接口,您必须是这个Bucket的Owner或拥有ks3:PutBucketCORS权限。Bucket的Owner默认具有所有权限,并且可以授予他人任意权限。
  • 每个Bucket最多可以配置100条规则。
  • 将XML文档作为CORS子资源添加到存储桶,文件大小限制在64KB。

说明

  • 用户通过配置跨域资源共享规则,可以实现指定空间响应来自不同源的请求。例如,您如果想要从一个源地址http://www.example.com以XMLHttpRequest的方式请求你在KS3的某个空间,可以通过此操作实现。
  • 要将您的存储桶配置为允许跨域请求,您可以以XML格式创建一个CORS配置,其中包含您允许访问存储桶的源地址、每个源地址支持的操作(HTTP方法)等信息。

简单配置示例(只包含必选参数):

以下关于存储桶的CORS配置包含两个规则:

  • 规则一:允许来自https://www.example.com源地址的跨域PUT、POST和DELETE请求。该规则还通过Access-Control-Request-Headers标头允许预检OPTIONS请求中的所有标头。作为对任何预检OPTIONS请求的响应,KS3将返回请求的任意标头。
  • 规则二:允许任一源地址通过GET方式请求跨域资源共享。’*'通配符代表所有源地址。
<CORSConfiguration>
    <CORSRule>
        <AllowedOrigin>http://www.example.com</AllowedOrigin>
        <AllowedMethod>PUT</AllowedMethod>
        <AllowedMethod>POST</AllowedMethod>
        <AllowedMethod>DELETE</AllowedMethod>
        <AllowedHeader>*</AllowedHeader>
    </CORSRule>
    <CORSRule>
        <AllowedOrigin>*</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
        <AllowedHeader>*</AllowedHeader>
    </CORSRule>
</CORSConfiguration>

复杂配置示例(包含可选参数)

用户可以通过其他可选参数来对某个空间进行CORS配置。例如,设置允许源地址http://www.example.com使用PUT和POST发送跨域资源共享请求。

<CORSConfiguration>
    <CORSRule>
        <AllowedOrigin>http://www.example.com</AllowedOrigin>
        <AllowedMethod>PUT</AllowedMethod>
        <AllowedMethod>POST</AllowedMethod>
        <AllowedHeader>*</AllowedHeader>
        <MaxAgeSeconds>3000</MaxAgeSeconds>
        <ExposeHeader>x-kss-server-side-encryption</ExposeHeader>
    </CORSRule>
</CORSConfiguration>

以上配置中,CORSRule包含以下可选参数:

  • MaxAgeSeconds:指定在KS3针对特定资源的预检OPTIONS请求作出响应后,浏览器缓存该响应的时间(以秒为单位,本示例中为3000秒)。通过缓存响应,在需要重复原始请求时,浏览器无需向KS3发送预检请求。
  • ExposeHeader:识别可允许客户从应用程序(例如,从JavaScript XMLHttpRequest数据元)进行访问的响应标头(在本示例中,为x-kss-server-side-encryption)。

当KS3收到针对某一空间的跨域请求,它会根据设定的跨域资源共享规则来进行匹配,为了能够正常匹配,用户提交的规则配置必须满足以下条件。

  • 请求源头部必须匹配AllowedOrigin配置。
  • 在一个预检OPTIONS请求中请求方法(如PUT、GET、HEAD等)或者Access-Control-Request-Method header必须是AllowedMethod配置中的一个。
  • 在一个预检OPTIONS请求中每一个在Access-Control-Request-Headers指明的头部必须匹配AllowedHeader配置。

请求

请求语法

PUT /?cors HTTP/1.1
Host: {BucketName}.{endpoint}
Content-Length: {length}
Date: {date}
Authorization: {SignatureValue}
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 包含CORSRules元素的容器,元素上限为100。
类型: Container
子节点: CORSRules
父节点: 无
CORSRule 源与方法的集合,最多可以配置100条规则。
类型: Container
子节点: AllowedOrigin, AllowedMethod, MaxAgeSeconds, ExposeHeader, ID.
父节点: CORSConfiguration
AllowedMethod 用户允许源所能执行的HTTP方法,每一条CORSRule必须定义至少一个源地址和一种方法。
类型: Enum (GET, PUT, HEAD, POST, DELETE)
父节点: CORSRule
AllowedOrigin 用户允许跨域资源共享访问的源地址,其最多含有一个"*"通配符。每一条CORSRule必须定义至少一个源地址和一种方法。例如:http://*.example.com。另外,你可以使用’*'来代表全部源。
类型: String
父节点: CORSRule
AllowedHeader 指明在预检OPTION中通过 Access-Control-Request-Headers 哪些头部是可以使用的。每一个在 Access-Control-Request-Headers 中指定的头部必须要与发送到KS3请求的头部保持一致,最多使用一个’*’。
类型: String
父节点: CORSRule
MaxAgeSeconds 指定在KS3针对特定资源的预检OPTIONS请求作出响应后,浏览器缓存该响应的时间。
类型: Integer (seconds)
父节点: CORSRule
ExposeHeader 识别可允许客户从应用程序(例如,从JavaScript XMLHttpRequest数据元)进行访问的响应标头。
类型: String
父节点: CORSRule

响应

响应头部

该接口仅返回常用响应头部

响应内容

该接口不返回响应内容。

特殊错误

该接口不返回特殊错误。

示例

请求示例

PUT /?cors HTTP/1.1
Content-MD5: /QO8JEkpekFaAuWWEKS7Fg==
Date: Thu, 15 Jun 2017 02:32:02 GMT
Authorization: authorization string
Content-Length: 652
Host: ks3-example.ks3-cn-beijing.ksyun.com

<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <CORSRule>
        <AllowedMethod>GET</AllowedMethod>
        <AllowedOrigin>http://baidu.com</AllowedOrigin>
        <AllowedHeader>*</AllowedHeader>
    </CORSRule>
    <CORSRule>
        <AllowedMethod>POST</AllowedMethod>
        <AllowedOrigin>http://*ks3.ksyun.com</AllowedOrigin>
        <AllowedOrigin>https://*ks3.console.ksyun.com</AllowedOrigin>
        <AllowedOrigin>https://*ks3.ksyun.com</AllowedOrigin>
        <AllowedOrigin>https://www.example.com</AllowedOrigin>
        <AllowedOrigin>http://*ks3.console.ksyun.com</AllowedOrigin>
        <AllowedHeader>*</AllowedHeader>
    </CORSRule>
</CORSConfiguration>

响应示例

HTTP/1.1 200 OK
Server: KS3
Date: Thu, 15 Jun 2017 02:32:56 GMT
Content-Length: 0
X-Application-Context: application
x-kss-request-id: 94def5b819f74135a1df54e6cf422f64
文档导读
纯净模式常规模式

纯净模式

点击可全屏预览文档内容
文档反馈