本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
若要測試您的 CORS 組態,可以使用 OPTIONS
方法傳送 CORS 預檢請求,以便讓伺服器在可以傳送請求時做出回應。當 Amazon S3 接收到預檢要求時,S3 會評估儲存貯體的 CORS 組態,並使用第一個符合來源請求的 CORSRule
規則來啟用跨原始伺服器請求。符合規則必須滿足下列條件:
-
對儲存貯體發出之 CORS 請求中的
Origin
標頭,必須符合 CORS 組態中AllowedOrigins
元素的原始伺服器。 -
在對儲存貯體發出之 CORS 請求的
Access-Control-Request-Method
中指定的 HTTP 方法,必須符合 CORS 組態中AllowedMethods
元素列出的方法。 預檢請求的
Access-Control-Request-Headers
標頭中列出的標頭,必須符合 CORS 組態的AllowedHeaders
元素中的標頭。
下列是 CORS 組態的範例。若要建立 CORS 組態,請參閱設定 CORS。如需 CORS 組態的更多範例,請參閱 CORS 組態的元素。
[
{
"AllowedHeaders": [
"Authorization"
],
"AllowedMethods": [
"GET"
"PUT",
"POST",
"DELETE"
],
"AllowedOrigins": [
"http://www.example1.com"
],
"ExposeHeaders": [
"x-amz-meta-custom-header"
]
}
]
若要測試 CORS 組態,您可以使用下列 CURL 命令傳送預檢 OPTIONS
檢查。CURL 是一種命令列工具,可用於與 S3 互動。如需詳細資訊,請參閱 CURL
curl -v -X OPTIONS \ -H "Origin: http://www.example1.com" \ -H "Access-Control-Request-Method: PUT" \ -H "Access-Control-Request-Headers: Authorization" \ -H "Access-Control-Expose-Headers: x-amz-meta-custom-header"\ "http://bucket_name.s3.amazonaws.com/object_prefix_name"
在上述範例中,curl -v -x OPTIONS
命令會用來將預檢請求傳送至 S3,以查詢 S3 是否允許從跨原始伺服器 http://www.example1.com
傳送物件 PUT
請求。標頭 Access-Control-Request-Headers
和 Access-Control-Expose-Headers
是選用項目。
-
為了回應預檢
OPTIONS
請求中的Access-Control-Request-Method
標頭,如果請求的方法相符,Amazon S3 會傳回允許的方法清單。 -
為了回應預檢
OPTIONS
請求中的Access-Control-Request-Headers
標頭,如果請求的標頭相符,Amazon S3 會傳回允許的標頭清單。 -
為了回應預檢
OPTIONS
請求中的Access-Control-Expose-Headers
標頭,如果請求的標頭符合可由指令碼 (在瀏覽器中執行) 存取的允許標頭,Amazon S3 會傳回允許的標頭清單。
注意
傳送預檢請求時,如果不允許任何 CORS 請求標頭,則不會傳回任何回應 CORS 標頭。
為了回應此預檢 OPTIONS
請求,您將會收到 200 OK
回應。如需在測試 CORS 時收到的常見錯誤代碼,以及解決 CORS 相關問題的詳細資訊,請參閱針對 CORS 進行疑難排解。
< HTTP/1.1 200 OK < Date: Fri, 12 Jul 2024 00:23:51 GMT < Access-Control-Allow-Origin: http://www.example1.com < Access-Control-Allow-Methods: GET, PUT, POST, DELETE < Access-Control-Allow-Headers: Authorization < Access-Control-Expose-Headers: x-amz-meta-custom-header < Access-Control-Allow-Credentials: true < Vary: Origin, Access-Control-Request-Headers, Access-Control-Request-Method < Server: AmazonS3 < Content-Length: 0