本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
測試 CORS
為了測試您的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組態的元素。
若要測試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
是可選的。
-
為了回應預檢請求中的
Access-Control-Request-Method
標頭,如果要OPTIONS
求的方法相符,Amazon S3 會傳回允許的方法清單。 -
為了回應預檢請求中的標
Access-Control-Request-Headers
頭,如果要OPTIONS
求的標頭相符,Amazon S3 會傳回允許的標頭清單。 -
為了回應預檢請求中的標
Access-Control-Expose-Headers
頭,如果要OPTIONS
求的標頭與瀏覽器中執行的指令碼可存取的允許標頭相符,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