CORS 組態的元素 - Amazon Simple Storage Service

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

CORS 組態的元素

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

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

如需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元素都會在您希望客戶能夠從其應用程式 (例如,從 JavaScriptXMLHttpRequest物件) 存取的回應中識別標頭。如需常見 Amazon S3 回應標頭的清單,請前往 Amazon Simple Storage Service API參考指南中的常見回應標頭

MaxAgeSeconds 元素

MaxAgeSeconds 元素會指定瀏覽器可以快取資源、HTTP方法和原始伺服器所識別之飛行前請求回應的時間,以秒為單位。

CORS 組態範例

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

下列範例CORS組態有三個規則,指定為CORSRule元素:

  • 第一個規則允許來自http://www.example1.com原始伺服器的跨原始伺服器 POST、 PUT和 DELETE請求。此規則也允許透過 標頭進行飛行前OPTIONS請求中的所有Access-Control-Request-Headers標頭。為了回應飛行前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原始伺服器的跨原始伺服器 POST、 PUT和 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 XMLHttpRequest物件x-amz-id-2) 存取的回應標頭 (在此範例中為 x-amz-server-side-encryptionx-amz-request-id、 和 )。