選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

對 CORS 進行故障診斷

焦點模式
對 CORS 進行故障診斷 - Amazon Simple Storage Service

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

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

下列主題可協助您針對一些與 S3 相關的常見 CORS 問題進行疑難排解。

403 禁止錯誤:此儲存貯體未啟用 CORS

當跨原始伺服器請求傳送至 Amazon S3,但 S3 儲存貯體上未設定 CORS 時,會發生下列 403 Forbidden 錯誤。

錯誤:HTTP/1.1 403 禁止的 CORS 回應:此儲存貯體未啟用 CORS。

CORS 組態是具有規則的文件或政策,這些規則可以識別允許您存取您儲存貯體的原始伺服器、每個原始伺服器支援的操作 (HTTP 方法),以及其他操作特定資訊。了解如何使用 Amazon S3 主控台、 AWS SDKs和 REST API 在 S3 上設定 CORS。 Amazon S3 如需 CORS 的詳細資訊和 CORS 組態的範例,請參閱 CORS 元素

403 禁止錯誤:不允許此 CORS 請求

當 CORS 組態中的 CORS 規則與請求中的資料不相符時,就會收到下列 403 Forbidden 錯誤。

錯誤:HTTP/1.1 403 禁止的 CORS 回應:不允許此 CORS 請求。

因此,此 403 Forbidden 錯誤可能是由多種原因所導致:

  • 不允許原始伺服器。

  • 不允許方法。

  • 不允許請求的標頭。

對於 Amazon S3 收到的每個請求,您必須在 CORS 組態中擁有符合請求中資料的 CORS 規則。

不允許原始伺服器

對儲存貯體發出之 CORS 請求中的 Origin 標頭,必須符合 CORS 組態中 AllowedOrigins 元素的原始伺服器。AllowedOrigins 元素中的萬用字元 ("*") 會符合所有 HTTP 方法。如需如何更新 AllowedOrigins 元素的詳細資訊,請參閱設定跨原始伺服器資源共用 (CORS)

例如,如果只有將 http://www.example1.com 網域包含在 AllowedOrigins 元素中,則從 http://www.example2.com 網域傳送的 CORS 請求會收到 403 Forbidden 錯誤。

下列範例顯示包含 AllowedOrigins 元素中 http://www.example1.com 網域的部分 CORS 組態。

"AllowedOrigins":[ "http://www.example1.com" ]

若要讓從 http://www.example2.com 網域傳送的 CORS 請求成功,http://www.example2.com 網域應包含在 CORS 組態的 AllowedOrigins 元素中。

"AllowedOrigins":[ "http://www.example1.com" "http://www.example2.com" ]

不允許方法

在對儲存貯體發出之 CORS 請求的 Access-Control-Request-Method 中指定的 HTTP 方法,必須符合 CORS 組態中 AllowedMethods 元素列出的方法。AllowedMethods 中的萬用字元 ("*") 會符合所有 HTTP 方法。如需如何更新 AllowedOrigins 元素的詳細資訊,請參閱設定跨原始伺服器資源共用 (CORS)

在 CORS 組態中,您可以在 AllowedMethods 元素中指定下列方法。

  • GET

  • PUT

  • POST

  • DELETE

  • HEAD

下列範例顯示 CORS 組態的一部分內容,其中包含 AllowedMethods 元素中的 GET 方法。只有包含 GET 方法的請求才會成功。

"AllowedMethods":[ "GET" ]

如果將 HTTP 方法 (例如 PUT) 用於 CORS 請求,或包含在傳送至您儲存貯體的預檢 CORS 請求中,但該方法不存在於您的 CORS 組態中,則請求會導致 403 Forbidden 錯誤。若要允許此 CORS 請求或 CORS 預檢請求,則必須將 PUT 方法新增至您的 CORS 組態。

"AllowedMethods":[ "GET" "PUT" ]

不允許請求的標頭

預檢請求的 Access-Control-Request-Headers 標頭中列出的標頭,必須符合 CORS 組態的 AllowedHeaders 元素中的標頭。如需可用於 Amazon S3 請求的常見標頭清單,請參閱常見請求標頭。如需如何更新 AllowedHeaders 元素的詳細資訊,請參閱設定跨原始伺服器資源共用 (CORS)

下列範例顯示包含 AllowedHeaders 元素中 Authorization 標頭的部分 CORS 組態。只有 Authorization 標頭的請求會成功。

"AllowedHeaders": [ "Authorization" ]

如果將標頭 (例如 Content-MD5) 包含在 CORS 請求中,但該標頭不存在於您的 CORS 組態中,則請求會導致 403 Forbidden 錯誤。若要允許此 CORS 請求,必須將 Content-MD5 標頭新增至您的 CORS 組態。如果您想要將 CORS 請求中的 AuthorizationContent-MD5 標頭同時傳遞至儲存貯體,請確認兩個標頭都包含在 CORS 組態的 AllowedHeaders 元素中。

"AllowedHeaders": [ "Authorization" "Content-MD5" ]

在 CORS 回應中找不到標頭

CORS 組態中的 ExposeHeaders 元素會識別您想要讓指令碼和應用程式 (在瀏覽器中執行) 存取的回應標頭,以回應 CORS 請求。

如果儲存在 S3 儲存貯體中的物件具有使用者定義的中繼資料 (例如 x-amz-meta-custom-header) 以及回應資料,則此自訂標頭可能包含您希望從用戶端 JavaScript 程式碼存取的其他中繼資料或資訊。不過,瀏覽器預設會基於安全考量封鎖對自訂標頭的存取。若要允許用戶端 JavaScript 存取自訂標頭,您需要在 CORS 組態中包含標頭。

在下面的範例中,x-amz-meta-custom-header1 標頭包含在 ExposeHeaders 元素中。x-amz-meta-custom-header2 不包含在 ExposeHeaders 元素中,而且不存在於 CORS 組態內。回應中只會傳回包含在 ExposeHeaders 元素中的值。如果請求在 x-amz-meta-custom-header2 標頭中包含 Access-Control-Expose-Headers 標頭,回應仍會傳回 200 OK。不過,這只會傳回允許的標頭 (例如 x-amz-meta-custom-header),並會顯示在回應中。

"ExposeHeaders": [ "x-amz-meta-custom-header1" ]

為了確保回應中顯示所有標頭,請將所有允許的標頭新增至 CORS 組態中的 ExposeHeaders 元素,如下所示。

"ExposeHeaders": [ "x-amz-meta-custom-header1", "x-amz-meta-custom-header2" ]

S3 Proxy 整合上 CORS 的考量

如果您遇到錯誤,且已檢查 S3 儲存貯體上的 CORS 組態,且跨來源請求會傳送至 Proxy,例如 AWS CloudFront,請嘗試下列動作:

  • 設定設定以允許 HTTP 請求的 OPTIONS 方法。

  • 設定 Proxy 以轉送下列標頭:OriginAccess-Control-Request-HeadersAccess-Control-Request-Method

部分 Proxy 可為 CORS 請求提供預先定義的功能。例如,在 CloudFront 中,您可以設定包含標頭的政策

當原始伺服器為 Amazon S3 儲存貯體時,啟用跨原始伺服器資源共用 (CORS) 請求。

此政策包括下列設定:

  • 原始伺服器請求中包含的標頭:

    Origin

    Access-Control-Request-Headers

    Access-Control-Request-Method

  • 原始伺服器請求中包含的 Cookie:無

  • 原始伺服器請求中包含的查詢字串:無

如需詳細資訊,請參閱《CloudFront 開發人員指南》中的使用政策控制原始伺服器請求使用受管原始伺服器請求政策

隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。