CORS(Cross Origin Resource Sharing),即跨域资源共享,是W3C标准化组织提出的一种规范机制,允许客户端的跨域请求的配置。在通常的网页请求中,由于安全策略SOP(Same Origin Policy)的存在,一个网站的脚本和内容是不能与另一个网站的脚本和内容发生交互的。
棱束链对象存储允许在桶内保存静态的网页资源,在正确的使用下,棱束链对象存储的桶可以成为网站资源。只有进行了适当的CORS配置,OBS中的网站才能响应另一个网站的跨域请求。
典型的应用场景如下:
- 你可以使用CORS支持,使用JavaScript和HTML 5来构建Web应用,直接访问棱束链对象存储中的资源,而不再需要代理服务器做中转。
- 可以使用HTML 5中的拖拽功能,直接向棱束链对象存储上传文件,展示上传进度,或是直接从Web应用中更新内容。
- 托管在不同域中的外部网页、样式表和HTML 5应用,现在可以引用存储在棱束链对象存储中的Web字体或图片,让这些资源能被多个网站共享。
PUT /?cors HTTP/1.1
Host: Bucket.s3-us-east-1.ossfiles.com
名称 | 描述 | 类型 |
---|---|---|
Bucket | 存储桶名称 | 字符串 |
该请求没有请求消息头。
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedHeader>string</AllowedHeader>
<AllowedMethod>string</AllowedMethod>
<AllowedOrigin>string</AllowedOrigin>
<ExposeHeader>string</ExposeHeader>
<MaxAgeSeconds>integer</MaxAgeSeconds>
</CORSRule>
</CORSConfiguration>
名称 | 描述 | 类型 |
---|---|---|
CORSRule | CORS规则,CORSConfiguration 下可最多包含100个规则。 | 容器 |
CORSRule.AllowedHeader | 一条Rule的标识,由不超过255个字符的字符串组成。 | 字符串 |
CORSRule.AllowedMethod | 配置CORS请求中允许携带的“Access-Control-Request-Headers”头域。如果一个请求带了“Access-Control-Request-Headers”头域,则只有匹配上AllowedHeader中的配置才认为是一个合法的CORS请求。每一个AllowedHeader可以带最多一个“*”通配符,不可出现空格。 | 字符串 |
CORSRule.AllowedOrigin | CORS规则允许的Origin(表示域名的字符串),可以带一个匹配符””。每一个AllowedOrigin可以带最多一个“”通配符。 | 字符串 |
CORSRule.ExposeHeader | CORS响应中带的附加头域,给客户端提供额外的信息,不可出现空格。 | 字符串 |
CORSRule.MaxAgeSeconds | 客户端可以缓存的CORS响应时间,以秒为单位。 | 整数 |
该请求没有响应正文。
该请求没有响应元素。
该请求没有响应消息头。
请求示例
PUT /?cors HTTP/1.1
Authorization: AWS4-HMAC-SHA256 Credential=2421a691b4ed625de19f6f92677b6459/20230117/us-east-1/s3/aws4_request, SignedHeaders=content-md5;host;x-amz-content-sha256;x-amz-date, Signature=b05a55deb59c90bba4efb1afbdea29c9f7c981a5b0eff41a1b83fcf02f48d717
Content-length: 557
Content-md5: wiRADauhtG+6fqgXsFiHHg==
Host: bucket.s3-us-east-1.ossfiles.com
X-amz-content-sha256: 79c9bc7c8d90e23efdd317ed3af335674cfea227330535bf097c02800a82f262
X-amz-date: 20230117T123309Z
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedHeader>*</AllowedHeader>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>DELETE</AllowedMethod>
<AllowedOrigin>http://www.example.com</AllowedOrigin>
<ExposeHeader>x-amz-server-side-encryption</ExposeHeader>
<MaxAgeSeconds>3000</MaxAgeSeconds>
</CORSRule>
<CORSRule>
<AllowedHeader>Authorization</AllowedHeader>
<AllowedMethod>GET</AllowedMethod>
<AllowedOrigin>*</AllowedOrigin>
<MaxAgeSeconds>3000</MaxAgeSeconds>
</CORSRule>
</CORSConfiguration>
返回示例
HTTP/1.1 200 OK
Content-length: 0
Date: Tue, 17 Jan 2023 12:33:10 GMT
x-amz-id-2: 69246410a0cf4287ad5a02a4c2d2b2b1
x-amz-request-id: 83d1794113974fe7969f04b3f1854cfa