CORS 配置的元素 - Amazon Simple Storage Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

CORS 配置的元素

要将您的存储桶配置为允许跨源请求,创建一个 CORS 配置。CORS 配置是一个包含元素的文档,这些元素标识可访问您的存储桶的源、对于每个源将支持的操作(HTTP 方法)以及其它操作特定的信息。您可以向配置添加最多 100 条规则。您可以将 CORS 配置作为 cors 子资源添加到存储桶中

如果要在 S3 控制台中配置 CORS,则必须使用 JSON 来创建 CORS 配置。新的 S3 控制台仅支持 JSON CORS 配置。

有关 CORS 配置及其中元素的更多信息,请参阅以下主题。有关如何添加 CORS 配置的说明,请参阅 配置跨源资源共享 (CORS)

重要

在 S3 控制台中,CORS 配置必须是 JSON。

AllowedMethods 元素

在 CORS 配置中,您可以为 AllowedMethods 元素指定以下值。

  • GET

  • PUT

  • POST

  • DELETE

  • HEAD

AllowedOrigins 元素

AllowedOrigins 元素中,可指定您希望允许从中发送跨源请求的源,例如 http://www.example.com。源字符串只能包含至少一个 * 通配符,例如 http://*.example.com。您可以选择将 * 指定为源,以允许所有源发送跨源请求。您还可以指定 https 只允许安全的源。

AllowedHeaders 元素

AllowedHeaders 元素通过 Access-Control-Request-Headers 标头指定预检请求中允许哪些标头。Access-Control-Request-Headers 标头中的每个标头名称必须匹配元素中的相应条目。Amazon S3 将仅发送请求的响应中允许的标头。有关适用于发送至 Amazon S3 的请求中的标头示例列表,请参阅 Amazon Simple Storage Service API 参考指南中的常见请求标头

配置中的每个 AllowedHeaders 字符串都可以包含至少一个 * 通配符。例如,<AllowedHeader>x-amz-*</AllowedHeader> 将允许所有特定于 Amazon 的标头。

ExposeHeaders 元素

每个 ExposeHeader 元素标识您希望客户能够从其应用程序 (例如,从 JavaScript XMLHttpRequest 对象) 进行访问的响应标头。有关常见的 Amazon S3 响应标头的列表,请参阅 Amazon Simple Storage Service API 参考指南中的常见响应标头

MaxAgeSeconds 元素

MaxAgeSeconds 元素指定在预检请求被资源、HTTP 方法和源识别之后,浏览器将为预检请求缓存响应的时间 (以秒为单位)。

CORS 配置的示例

您可以使用您自己的域(例如 example1.com)提供您的内容,而不是通过使用 Amazon S3 网站端点访问网站。有关如何使用您自己的域的信息,请参阅 教程:使用注册到 Route 53 的自定义域配置静态网站

以下示例 CORS 配置具有三个规则,这些规则被指定为 CORSRule 元素:

  • 第一个规则允许来自 http://www.example1.com 源的跨源 PUT、POST 和 DELETE 请求。该规则还通过 Access-Control-Request-Headers 标头允许预检 OPTIONS 请求中的所有标头。作为对预检 OPTIONS 请求的响应,Amazon S3 将返回请求的标头。

  • 第二个规则允许与第一个规则具有相同的跨源请求,但第二个规则应用于另一个源 http://www.example2.com

  • 第三个规则允许来自所有源的跨源 GET 请求。* 通配符将引用所有源。

JSON
[ { "AllowedHeaders": [ "*" ], "AllowedMethods": [ "PUT", "POST", "DELETE" ], "AllowedOrigins": [ "http://www.example1.com" ], "ExposeHeaders": [] }, { "AllowedHeaders": [ "*" ], "AllowedMethods": [ "PUT", "POST", "DELETE" ], "AllowedOrigins": [ "http://www.example2.com" ], "ExposeHeaders": [] }, { "AllowedHeaders": [], "AllowedMethods": [ "GET" ], "AllowedOrigins": [ "*" ], "ExposeHeaders": [] } ]
XML
<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>

CORS 配置还允许可选的配置参数,如下面的 CORS 配置所示。在本示例中,CORS 配置允许来自 http://www.example.com 源的跨源 PUT、POST 和 DELETE 请求。

JSON
[ { "AllowedHeaders": [ "*" ], "AllowedMethods": [ "PUT", "POST", "DELETE" ], "AllowedOrigins": [ "http://www.example.com" ], "ExposeHeaders": [ "x-amz-server-side-encryption", "x-amz-request-id", "x-amz-id-2" ], "MaxAgeSeconds": 3000 } ]
XML
<CORSConfiguration> <CORSRule> <AllowedOrigin>http://www.example.com</AllowedOrigin> <AllowedMethod>PUT</AllowedMethod> <AllowedMethod>POST</AllowedMethod> <AllowedMethod>DELETE</AllowedMethod> <AllowedHeader>*</AllowedHeader> <MaxAgeSeconds>3000</MaxAgeSeconds> <ExposeHeader>x-amz-server-side-encryption</ExposeHeader> <ExposeHeader>x-amz-request-id</ExposeHeader> <ExposeHeader>x-amz-id-2</ExposeHeader> </CORSRule> </CORSConfiguration>

上述配置中的 CORSRule 元素包括以下可选元素:

  • MaxAgeSeconds — 指定在 Amazon S3 针对特定资源的预检 OPTIONS 请求作出响应后,浏览器缓存该响应的时间(以秒为单位,在本示例中为 3000 秒)。通过缓存响应,在需要重复原始请求时,浏览器无需向 Amazon S3 发送预检请求。

  • ExposeHeaders – 识别可让客户从应用程序 (例如,从 JavaScript x-amz-server-side-encryption 对象) 进行访问的响应标头 (在本示例中,为 x-amz-request-idx-amz-id-2XMLHttpRequest)。