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 簡單儲存服務API參考指南中的一般請求標頭

組態中的每個 AllowedHeaders 字串最多可包含一個 * 萬用字元。例如,<AllowedHeader>x-amz-*</AllowedHeader> 會啟用所有 Amazon 專屬的標頭。

ExposeHeaders 元素

每個ExposeHeader元素會在回應中識別您希望客戶能夠從其應用程式存取的標頭 (例如,從 JavaScriptXMLHttpRequest物件)。如需常見的 Amazon S3 回應標頭清單,請前往 Amazon 簡單儲存服務API參考指南中的常見回應標頭

MaxAgeSeconds 元素

MaxAgeSeconds元素會指定您的瀏覽器可快取資源、HTTP方法和來源所識別之預檢要求回應的時間 (以秒為單位)。

CORS配置示例

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

下面的示例CORS配置有三個規則,它們被指定為CORSRule元素:

  • 第一個規則允許來自來源的跨PUThttp://www.example1.com來源和DELETE請求。POST此規則也允許透過標頭預檢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組態允許來自來源的跨來PUThttp://www.example.com源和DELETE要求。POST

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請求的時間 (以秒為單位)。藉由快取回應的方式,瀏覽器便不需要在原始要求重複時,將再次向 Amazon S3 傳送預檢要求。

  • ExposeHeader識別客戶能夠從其應用程式 (例如 x-amz-server-side-encryptionx-amz-request-id,從 JavaScript XMLHttpRequest物件x-amz-id-2) 存取的回應標頭 (在此範例中為、和)。