

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# CORS 組態的元素
<a name="ManageCorsUsing"></a>

若要設定儲存貯體允許跨來源要求，您可以建立 CORS 組態。CORS 組態是具有元素的文件，這些規則可以識別允許您存取您儲存貯體的原始伺服器、每個原始伺服器支援的操作 (HTTP 方法)，以及其他操作特定資訊。最多可以將 100 條規則新增至組態。您可以將 CORS 組態以 `cors` 子資源的形式新增至儲存貯體。

如果您在 S3 主控台中設定 CORS，則必須使用 JSON 建立 CORS 組態。新的 S3 主控台只支援 JSON CORS 組態。

如需有關 CORS 組態及其中元素的詳細資訊，請參閱下列主題。如需如何新增 CORS 組態的說明，請參閱 [設定跨來源資源分享 (CORS)](enabling-cors-examples.md)。

**重要**  
在 S3 主控台中，CORS 組態必須為 JSON 格式。

**Topics**
+ [`AllowedMethods` 元素](#cors-allowed-methods)
+ [`AllowedOrigins` 元素](#cors-allowed-origin)
+ [`AllowedHeaders` 元素](#cors-allowed-headers)
+ [`ExposeHeaders` 元素](#cors-expose-headers)
+ [`MaxAgeSeconds` 元素](#cors-max-age)
+ [CORS 組態範例](#cors-example-1)

## `AllowedMethods` 元素
<a name="cors-allowed-methods"></a>

在 CORS 組態中，您可以為 `AllowedMethods` 元素指定下列數值。
+ GET
+ PUT
+ POST
+ DELETE
+ HEAD

## `AllowedOrigins` 元素
<a name="cors-allowed-origin"></a>

在 `AllowedOrigins` 元素中，可指定希望允許跨網域要求的來源，例如 ` http://www.example.com`。原始字串只可包含一個 '`*`' 萬用字元，例如 `http://*.example.com`。您可以選擇性地指定 '`*`' 作為來源，允許所有來源傳送跨來源要求。您也可以指定 `https` 而只允許安全的來源。

## `AllowedHeaders` 元素
<a name="cors-allowed-headers"></a>

`AllowedHeaders` 元素透過 `Access-Control-Request-Headers` 標頭，可指定在預檢要求中允許的標頭。在 `Access-Control-Request-Headers` 標頭中的每個標頭名稱，都必須符合元素中相對應的項目。Amazon S3 在要求的回應中只會傳送允許的標頭。如需可用於 Amazon S3 請求的標頭範例清單，請移至 *Amazon 簡易儲存服務 API 參考*指南中的[常見請求標頭](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonRequestHeaders.html)。

組態中的每個 AllowedHeaders 字串，最多只能包含一個 '\$1' 萬用字元。例如，`<AllowedHeader>x-amz-*</AllowedHeader>` 會啟用所有 Amazon 專屬的標頭。

## `ExposeHeaders` 元素
<a name="cors-expose-headers"></a>

每個 `ExposeHeader` 元素都會識別回應中您希望客戶能從其應用程式 (例如 JavaScript `XMLHttpRequest` 物件) 進行存取的標頭。如需常見的 Amazon S3 回應標頭清單，請移至 *Amazon 簡易儲存服務 API 參考*指南中的[常用回應標頭](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonResponseHeaders.html)。

## `MaxAgeSeconds` 元素
<a name="cors-max-age"></a>

`MaxAgeSeconds` 元素會指定秒數，即您的瀏覽器為根據資源、HTTP 方法及來源所識別之預檢，快取要求的時間。

## CORS 組態範例
<a name="cors-example-1"></a>

除了使用 Amazon S3 網站端點存取網站之外，您也可以使用自己的網域 (例如 `example1.com`) 提供內容。如需使用自有網域的資訊，請參閱「[教學課程：使用向 Route 53 註冊的自訂網域設定靜態網站](website-hosting-custom-domain-walkthrough.md)」。

下列範例 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` — 指定時間秒數 (在此範例中為 3000)，瀏覽器會為指定的資源對預檢 OPTIONS 要求快取 Amazon S3 回應的時間。藉由快取回應的方式，瀏覽器便不需要在原始要求重複時，將再次向 Amazon S3 傳送預檢要求。
+ `ExposeHeaders` — 識別客戶能夠從其應用程式 (例如 JavaScript `x-amz-server-side-encryption` 物件) 存取的回應標頭 (在此範例中為 `x-amz-request-id`、`x-amz-id-2` 及 `XMLHttpRequest`)。