

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

# 使用跨來源資源分享 (CORS)
<a name="cors"></a>

跨來源資源分享 (CORS) 會定義一種方式，讓載入單一個網域的用戶端 Web 應用程式，能與不同網域中的資源互動。透過 CORS 支援，您可以使用 Amazon S3 建立功能豐富的用戶端 Web 應用程式，而且也可以選擇性地允許跨來源存取您的 Amazon S3 資源。

本節提供 CORS 的概觀。子主題說明如何使用 Amazon S3 主控台啟用 CORS，或使用 Amazon S3 REST API 和 AWS SDKs 以程式設計方式啟用 CORS。

## 跨來源資源分享：使用案例情境
<a name="example-scenarios-cors"></a>

以下為使用 CORS 的情境範例。

**案例 1**  
假設您正在名為 `website` 的 Amazon S3 儲存貯體中託管網站，如 [使用 Amazon S3 託管靜態網站](WebsiteHosting.md) 所述。您的使用者載入了網站端點：

```
http://website.s3-website.us-east-1.amazonaws.com
```

現在您想在存放於此儲存貯體中的網頁使用 JavaScript，以藉由儲存貯體的 Amazon S3 API 端點 (`website.s3.us-east-1.amazonaws.com`) 對相同的儲存貯體進行驗證 GET 及 PUT 要求。瀏覽器一般會封鎖 JavaScript 進行這類要求，但您可以透過 CORS 設定儲存貯體，明確地啟用來自 `website.s3-website.us-east-1.amazonaws.com` 的跨來源要求。

**案例 2**  
假設您希望從 S3 儲存貯體託管一個 Web 字型。再者，瀏覽器需要 CORS 檢查(也稱為預先檢查)，來載入 Web 字體。您可以設定裝載 Web 字體的儲存貯體，允許任何來源發出這些要求。

## Amazon S3 如何評估儲存貯體上的 CORS 組態？
<a name="cors-eval-criteria"></a>

當 Amazon S3 從瀏覽器接收到預檢要求時，會評估儲存貯體的 CORS 組態，並使用第一個符合來源瀏覽器要求的 `CORSRule` 規則來啟用跨來源要求。符合規則必須滿足下列條件：
+ 對儲存貯體發出之 CORS 請求中的 `Origin` 標頭，必須符合 CORS 組態中 `AllowedOrigins` 元素的原始伺服器。
+ 在對儲存貯體發出之 CORS 請求的 `Access-Control-Request-Method` 中指定的 HTTP 方法，必須符合 CORS 組態中 `AllowedMethods` 元素列出的方法。
+ 預檢請求的 `Access-Control-Request-Headers` 標頭中列出的標頭，必須符合 CORS 組態的 `AllowedHeaders` 元素中的標頭。

**注意**  
在儲存貯體上啟用 CORS 時，仍繼續適用 ACL 及政策。

## Object Lambda 存取點如何支援 CORS
<a name="cors-olap-cors"></a>

當 S3 Object Lambda 從瀏覽器接收到請求，或請求包含 `Origin` 標頭時，S3 Object Lambda 一律會新增 `"AllowedOrigins":"*"` 標頭欄位。

如需使用 CORS 的詳細資訊，請參閱下列主題。

**Topics**
+ [跨來源資源分享：使用案例情境](#example-scenarios-cors)
+ [Amazon S3 如何評估儲存貯體上的 CORS 組態？](#cors-eval-criteria)
+ [Object Lambda 存取點如何支援 CORS](#cors-olap-cors)
+ [CORS 組態的元素](ManageCorsUsing.md)
+ [設定跨來源資源分享 (CORS)](enabling-cors-examples.md)
+ [測試 CORS](testing-cors.md)
+ [對 CORS 進行故障診斷](cors-troubleshooting.md)