跨來源資源分享 (CORS) 會定義一種方式,讓載入單一個網域的用戶端 Web 應用程式,能與不同網域中的資源互動。透過 CORS 支援,您可以使用 Amazon S3 建立功能豐富的用戶端 Web 應用程式,而且也可以選擇性地允許跨來源存取您的 Amazon S3 資源。
本節提供 CORS 的概觀。各個副主題則說明使用 Amazon S3 主控台啟用 CORS 的方式,或是透過 Amazon S3 REST API 及 AWS SDK 以程式設計的方式啟用。
跨來源資源分享:使用案例情境
以下為使用 CORS 的情境範例。
案例 1
假設您正在名為 website
的 Amazon S3 儲存貯體中託管網站,如 使用 Amazon S3 託管靜態網站 所述。您的使用者載入了網站端點:
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 組態?
當 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
當 S3 Object Lambda 從瀏覽器接收到請求,或請求包含 Origin
標頭時,S3 Object Lambda 一律會新增 “AllowedOrigins":"*"
標頭欄位。
如需使用 CORS 的詳細資訊,請參閱下列主題。