PUT Bucket cors

最近更新时间:2024-10-15 15:28:41

我的收藏

功能描述

PUT Bucket cors 请求用于为存储桶配置跨域资源共享(CORS)访问控制,您可以通过传入 XML 格式的配置文件来实现配置,文件大小限制为64KB。


授权说明

授权策略中 action 设置为 cos:PutBucketCORS 。查看所有 action

请求

请求示例

PUT /?cors HTTP/1.1
Host: <BucketName-APPID>.cos.<Region>.myqcloud.com
Date: GMT Date
Content-Type: application/xml
Content-Length: Content Length
Content-MD5: MD5
Authorization: Auth String

[Request Body]
说明
Host: <BucketName-APPID>.cos.<Region>.myqcloud.com,其中 <BucketName-APPID> 为带 APPID 后缀的存储桶名字,例如 examplebucket-1250000000,可参阅 存储桶概览 > 基本信息存储桶概述 > 存储桶命名规范 文档;<Region> 为 COS 的可用地域,可参阅 地域和访问域名 文档。
Authorization: Auth String(详情请参见 请求签名 文档)。

请求参数

此接口无请求参数。

请求头

此接口仅使用公共请求头部,详情请参见 公共请求头部 文档。

请求体

提交 application/xml 请求数据,包含完整的存储桶跨域资源共享(CORS)配置信息。
<CORSConfiguration>
<CORSRule>
<AllowedOrigin>string</AllowedOrigin>
<AllowedMethod>enum</AllowedMethod>
<AllowedMethod>enum</AllowedMethod>
<AllowedHeader>string</AllowedHeader>
<AllowedHeader>string</AllowedHeader>
<ExposeHeader>string</ExposeHeader>
<ExposeHeader>string</ExposeHeader>
<MaxAgeSeconds>integer</MaxAgeSeconds>
</CORSRule>
<CORSRule>
<ID>string</ID>
<AllowedOrigin>string</AllowedOrigin>
<AllowedOrigin>string</AllowedOrigin>
<AllowedMethod>enum</AllowedMethod>
<AllowedMethod>enum</AllowedMethod>
<AllowedHeader>string</AllowedHeader>
<ExposeHeader>string</ExposeHeader>
<ExposeHeader>string</ExposeHeader>
<MaxAgeSeconds>integer</MaxAgeSeconds>
</CORSRule>
</CORSConfiguration>
具体的节点描述如下:
节点名称(关键字)
父节点
描述
类型
是否必选
CORSConfiguration
包含 PUT Bucket cors 操作的所有请求信息
Container
Container 节点 CORSConfiguration 的内容:
节点名称(关键字)
父节点
描述
类型
是否必选
CORSRule
CORSConfiguration
说明单条跨域资源共享(CORS)配置的所有信息,最多可以包含100条 CORSRule
Container
Container 节点 CORSRule 的内容:
节点名称(关键字)
父节点
描述
类型
是否必选
AllowedOrigin
CORSConfiguration.CORSRule
允许的访问来源,单条 CORSRule 可以配置多个 AllowedOrigin。
配置支持 *,表示全部域名都允许,但不推荐。
支持单个具体域名,例如 http://www.example.com
支持 * 通配符,通配符可出现在任何位置,包括协议、域名和端口,可匹配0个或多个字符,但是只能有一个 *。请谨慎使用通配符,因为可能意外匹配到非预期的来源
注意不要遗漏协议名 http 或 https,若端口不是默认的80(http)或443(https),还需要带上端口,例如 https://example.com:8443
string
AllowedMethod
CORSConfiguration.CORSRule
允许的 HTTP 操作方法(Method),对应 CORS 请求响应中的 Access-Control-Allow-Methods 头部,单条 CORSRule 可以配置多个 AllowedMethod。枚举值:PUT、GET、POST、DELETE、HEAD。
enum
AllowedHeader
CORSConfiguration.CORSRule
在发送预检(OPTIONS)请求时,浏览器会告知服务端接下来的正式请求将使用的自定义 HTTP 请求头部,此配置用于指定允许浏览器发送 CORS 请求时携带的自定义 HTTP 请求头部,不区分英文大小写,单条 CORSRule 可以配置多个 AllowedHeader。
可以配置*,代表允许所有头部,为了避免遗漏,推荐配置为*
如果不配置为*,那么在预检(OPTIONS)请求中 Access-Control-Request-Headers 头部出现的每个 Header,都必须在 AllowedHeader 中有对应项。
string
ExposeHeader
CORSConfiguration.CORSRule
允许浏览器获取的 CORS 请求响应中的头部,不区分大小写,单条 CORSRule 可以配置多个 ExposeHeader。
默认情况下浏览器只能访问简单响应头部:Cache-Control、Content-Type、Expires、Last-Modified,如果需要访问其他响应头部,需要添加 ExposeHeader 配置。
不支持配置为 *,必须明确配置具体的 Header。
根据浏览器的实际需求确定,默认推荐填写 ETag,可参考各 API 文档的响应头部分及 公共响应头部 文档。
string
MaxAgeSeconds
CORSConfiguration.CORSRule
跨域资源共享配置的有效时间,单位为秒,在有效时间内,浏览器无须为同一请求再次发起预检(OPTIONS)请求,对应 CORS 请求响应中的 Access-Control-Max-Age 头部,单条 CORSRule 只能配置一个 MaxAgeSeconds。
integer
ID
CORSConfiguration.CORSRule
单条 CORSRule 配置的 ID,用于在 GET Bucket cors 时查找指定 CORSRule。可选填,单条 CORSRule 最多配置一个 ID。
string

响应

响应头

此接口仅返回公共响应头部,详情请参见 公共响应头部 文档。

响应体

此接口响应体为空。

错误码

此接口遵循统一的错误响应和错误码,详情请参见 错误码 文档。

实际案例

请求

PUT /?cors HTTP/1.1
Host: examplebucket-1250000000.cos.ap-beijing.myqcloud.com
Date: Thu, 09 Jul 2020 11:15:01 GMT
Content-Type: application/xml
Content-Length: 1185
Content-MD5: ZNkhBxyjkaZcs1j7/cIE2A==
Authorization: q-sign-algorithm=sha1&q-ak=AKID8A0fBVtYFrNm02oY1g1JQQF0c3JO****&q-sign-time=1594293301;1594300501&q-key-time=1594293301;1594300501&q-header-list=content-length;content-md5;content-type;date;host&q-url-param-list=cors&q-signature=2ec71624468abfbd5c8ea2679e1365b29f3a****
Connection: close

<CORSConfiguration>
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>HEAD</AllowedMethod>
<AllowedHeader>Range</AllowedHeader>
<AllowedHeader>x-cos-server-side-encryption-customer-algorithm</AllowedHeader>
<AllowedHeader>x-cos-server-side-encryption-customer-key</AllowedHeader>
<AllowedHeader>x-cos-server-side-encryption-customer-key-MD5</AllowedHeader>
<ExposeHeader>Content-Length</ExposeHeader>
<ExposeHeader>ETag</ExposeHeader>
<ExposeHeader>x-cos-meta-author</ExposeHeader>
<MaxAgeSeconds>600</MaxAgeSeconds>
</CORSRule>
<CORSRule>
<ID>example-id</ID>
<AllowedOrigin>https://example.com</AllowedOrigin>
<AllowedOrigin>https://example.net</AllowedOrigin>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>GET</AllowedMethod>
...
<AllowedMethod>HEAD</AllowedMethod>
<AllowedHeader>*</AllowedHeader>
<ExposeHeader>Content-Length</ExposeHeader>
<ExposeHeader>ETag</ExposeHeader>
<ExposeHeader>x-cos-meta-author</ExposeHeader>
<MaxAgeSeconds>600</MaxAgeSeconds>
</CORSRule>
</CORSConfiguration>

响应

HTTP/1.1 200 OK
Content-Length: 0
Connection: close
Date: Thu, 09 Jul 2020 11:15:01 GMT
Server: tencent-cos
x-cos-request-id: NWYwNmZjMzVfMzFiYjBiMDlfZjgzYV8xZDky****