设置存储分区 CORS

默认情况下,存储分区未设置任何 CORS 配置。如需为现有存储分区设置或修改 CORS,您需要发出 PUT 请求(将范围限定到存储分区),并使用 cors 查询字符串参数。您必须针对您要应用的一个或多个 CORS 配置,在请求正文中包含 XML 文档。请注意,您无法为正在创建的新存储分区设置 CORS 配置。

您必须具有 FULL_CONTROL 权限才能将 CORS 配置应用于现有存储分区。此外,您还必须经过身份验证才能使用 PUT 存储分区方法。

有关如何在存储分区上设置 CORS 配置的指南,请参阅配置跨域资源共享 (CORS)

查询字符串参数

参数 说明 必需
cors 您可用它来更改现有存储分区的 CORS 配置。您必须在请求正文中提供 CORS XML 文档。

如需了解您在创建和使用签名网址时包含的参数,请参阅签名网址查询字符串参数

请求标头

请参阅常见请求标头

请求正文元素

下图显示了 CORS 配置中的 XML 元素嵌套方式。有关详情,请参阅图表下方的表格。

以下请求正文元素仅在您使用 cors 查询字符串参数为现有存储分区指定 CORS 时适用。

元素 说明
CorsConfig 一个或多个 Cors 配置容器的容器。如果您指定多个 Cors 配置,请注意,Cors 配置将按照 CorsConfig 容器中列出的顺序进行评估。第一个 Cors 配置与用于确定要添加到响应中的任何 CORS 响应标头的请求来源匹配和方法相匹配中下载 Google 健身应用。
Cors 用于应用于存储分区的 CORS 配置的容器。您可在每个 Cors 容器中指定多个来源和多种方法。如果请求来源与 Cors 容器中的任何来源匹配,并且请求方法与 Cors 容器中的任何方法匹配,则匹配。
Origins 允许与此 Cloud Storage 存储分区之间跨源资源共享的源的容器。
Origin 允许与此 Cloud Storage 存储分区共享跨源资源的来源。例如 https://origin1.example.com。如果您提供仅包含通配符 (<Origin>*</Origin>) 的值,则允许访问所有源。
Methods 一个或多个 HTTP 方法元素的容器,用于指定允许与此 Cloud Storage 存储分区共享跨源资源共享的方法。
Method 此配置中使用的 HTTP 方法。有效值为 DELETEGETHEADPOSTPUTOPTIONS 会被解释为预检请求,因此您无需在 CORS 配置中指定此方法。
ResponseHeaders 一个或多个 ResponseHeader 元素的可选容器。
ResponseHeader 指定用户代理可在源文件之间共享的响应标头。
MaxAgeSec 此值用于响应预检请求,指明客户端(浏览器)在发出请求前必须重复进行预检请求的时间(以秒为单位)。(表示缓存到期时间。) 如果请求方法包含非简单标头,或者请求方法不是 POST、GET 或 HEAD,则必须提供预检请求。值在对预检请求的响应中返回 Access-Control-Max-Age 标头。

请求语法

PUT /?cors HTTP/1.1
Host: BUCKET_NAME.storage.googleapis.com
Date: DATE_AND_TIME_OF_REQUEST
Content-Length: REQUEST_BODY_LENGTH
Content-Type: MIME_TYPE_OF_THE_BODY
Authorization: AUTHENTICATION_STRING

XML_DOCUMENT_DEFINING_CORS

响应标头

请求可以返回各种响应标头,具体取决于您使用的请求标头。

响应正文元素

响应的响应正文中不包含 XML 文档。

示例

以下示例为名为 acme-pets 的存储分区设置了 CORS 配置。此 CORS 配置设置两个来源以及允许这些来源的 HTTP 方法。在此示例中,允许使用所有可用的 HTTP 方法。

请求

PUT /?cors HTTP/1.1
Host: acme-pets.storage.googleapis.com
Date: Thu, 12 Mar 2012 03:38:42 GMT
Content-Length: 1320
Authorization: Bearer ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg

<?xml version="1.0" encoding="UTF-8"?>
<CorsConfig>
  <Cors>
    <Origins>
      <Origin>http://origin1.example.com</Origin>
      <Origin>http://origin2.example.com</Origin>
    </Origins>
    <Methods>
      <Method>GET</Method>
      <Method>HEAD</Method>
      <Method>PUT</Method>
      <Method>POST</Method>
      <Method>DELETE</Method>
    </Methods>
    <ResponseHeaders>
      <ResponseHeader>x-goog-meta-foo1</ResponseHeader>
      <ResponseHeader>x-goog-meta-foo2</ResponseHeader>
    </ResponseHeaders>
    <MaxAgeSec>1800</MaxAgeSec>
  </Cors>
</CorsConfig>

响应

HTTP/1.1 200 OK
Date: Thu, 12 Mar 2012 03:38:42 GMT
Expires: Mon, 01 Jan 1990 00:00:00 GMT
Cache-Control: no-cache, no-store, must-revalidate
Content-Length: 0
Content-Type: text/html