

# 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`는 선택 사항입니다.
+ Amazon S3는 사전 `OPTIONS` 요청의 `Access-Control-Request-Method` 헤더에 대한 응답으로 요청된 메서드가 일치하는 경우 허용된 메서드 목록을 반환합니다.
+ Amazon S3는 사전 `OPTIONS` 요청의 `Access-Control-Request-Headers` 헤더에 대한 응답으로 요청된 헤더가 일치하는 경우 허용된 헤더 목록을 반환합니다.
+ Amazon S3는 사전 `OPTIONS` 요청의 `Access-Control-Expose-Headers` 헤더에 대한 응답으로 요청된 헤더가 브라우저에서 실행되는 스크립트에서 액세스할 수 있는 허용 헤더와 일치하는 경우 허용된 헤더 목록을 반환합니다.

**참고**  
사전 요청을 전송할 때 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
```