

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

# 測試 CORS
<a name="testing-cors"></a>

若要測試您的 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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/enabling-cors-examples.html)。如需 CORS 組態的更多範例，請參閱 [CORS 組態的元素](https://docs.aws.amazon.com/AmazonS3/latest/userguide/ManageCorsUsing.html)。

如需有關設定和故障診斷 CORS 規則的指引，請參閱 AWS re:Post 知識中心的[如何在 Amazon S3 中設定 CORS 並使用 cURL 確認 CORS 規則？](https://repost.aws/knowledge-center/s3-configure-cors)。

------
#### [ JSON ]

```
[
    {
        "AllowedHeaders": [
            "Authorization"
        ],
        "AllowedMethods": [
            "GET",
            "PUT",
            "POST",
            "DELETE"
        ],
        "AllowedOrigins": [
            "http://www.example1.com"
        ],
        "ExposeHeaders":  [
             "x-amz-meta-custom-header"
        ]
    
    }
]
```

------

若要測試 CORS 組態，您可以使用下列 CURL 命令傳送預檢 `OPTIONS` 檢查。CURL 是一種命令列工具，可用於與 S3 互動。如需詳細資訊，請參閱 [CURL](https://curl.se/)。

```
 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 進行疑難排解](https://docs.aws.amazon.com/AmazonS3/latest/userguide/cors-troubleshooting.html)。

```
< 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
```