

# CORS 구성의 요소
<a name="ManageCorsUsing"></a>

Cross-Origin 요청을 허용하도록 버킷을 구성하려면 CORS 구성을 생성합니다. CORS 구성은 버킷에 액세스할 수 있도록 허용할 오리진, 각 오리진에 대해 지원되는 작업(HTTP 메서드) 및 기타 작업별 정보를 식별하는 요소가 포함된 문서입니다. 구성당 최대 100개의 규칙을 추가할 수 있습니다. CORS 구성을 `cors` 하위 리소스로 버킷에 추가할 수 있습니다.

S3 콘솔에서 CORS를 구성하는 경우 JSON을 사용하여 CORS 구성을 생성해야 합니다. 새로운 S3 콘솔은 JSON CORS 구성만 지원합니다.

CORS 구성 및 구성 내 요소에 대한 자세한 내용은 아래 주제를 참조하십시오. CORS 구성을 추가하는 방법에 대한 지침은 [교차 오리진 리소스 공유(CORS) 구성](enabling-cors-examples.md) 섹션을 참조하십시오.

**중요**  
S3 콘솔에서 CORS 구성은 JSON이어야 합니다.

**Topics**
+ [`AllowedMethods` 요소](#cors-allowed-methods)
+ [`AllowedOrigins` 요소](#cors-allowed-origin)
+ [`AllowedHeaders` 요소](#cors-allowed-headers)
+ [`ExposeHeaders` 요소](#cors-expose-headers)
+ [`MaxAgeSeconds` 요소](#cors-max-age)
+ [CORS 구성의 예](#cors-example-1)

## `AllowedMethods` 요소
<a name="cors-allowed-methods"></a>

CORS 구성에서 `AllowedMethods` 요소에 대한 다음 값을 지정할 수 있습니다.
+ GET
+ PUT
+ POST
+ DELETE
+ HEAD

## `AllowedOrigins` 요소
<a name="cors-allowed-origin"></a>

`AllowedOrigins` 요소에 교차 도메인 요청을 허용하려는 오리진을 지정합니다(예: ` http://www.example.com`). 오리진 문자열에는 `*` 와일드 문자 한 개만 포함할 수 있습니다(예: `http://*.example.com`). `*`를 모든 오리진이 교차 오리진 요청을 보낼 수 있는 오리진으로 지정할 수도 있습니다. 또한 `https`를 지정하여 안전한 오리진만 허용할 수도 있습니다.

## `AllowedHeaders` 요소
<a name="cors-allowed-headers"></a>

`AllowedHeaders` 요소는 `Access-Control-Request-Headers` 헤더를 통해 preflight 요청에 허용되는 헤더를 지정합니다. `Access-Control-Request-Headers` 헤더의 각 헤더 이름은 요소의 해당 항목과 일치해야 합니다. Amazon S3은 요청된 응답에서 허용된 헤더만을 보냅니다. Amazon S3에 대한 요청에 사용할 수 있는 샘플 헤더 목록을 보려면 *Amazon Simple Storage Service API 참조* 가이드의 [공통 요청 헤더](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonRequestHeaders.html)를 참조하십시오.

구성의 각 AllowedHeaders 문자열에는 최대 한 개의 \$1 와일드카드 문자를 포함할 수 있습니다. 예를 들어, `<AllowedHeader>x-amz-*</AllowedHeader>`는 모든 Amazon별 헤더를 허용합니다.

## `ExposeHeaders` 요소
<a name="cors-expose-headers"></a>

각 `ExposeHeader` 요소는 응답에서 고객이 해당 애플리케이션(예: JavaScript `XMLHttpRequest` 객체)으로부터 액세스할 수 있도록 하려는 헤더를 식별합니다. 공통 Amazon S3 응답 헤더 목록을 보려면 *Amazon Simple Storage Service API 참조* 가이드의 [공통 응답 헤더](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonResponseHeaders.html)를 참조하십시오.

## `MaxAgeSeconds` 요소
<a name="cors-max-age"></a>

`MaxAgeSeconds` 요소는 브라우저가 리소스, HTTP 메서드, 오리진으로 식별되는 preflight 요청에 대한 응답을 캐시할 수 있는 시간(초)을 지정합니다.

## CORS 구성의 예
<a name="cors-example-1"></a>

Amazon S3 웹 사이트 엔드포인트를 사용하여 웹 사이트에 액세스하는 대신, `example1.com`과 같은 자체 도메인을 사용하여 콘텐츠를 제공할 수 있습니다. 자체 도메인 사용에 대한 자세한 내용은 [자습서: Route 53에 등록된 사용자 지정 도메인을 사용하여 정적 웹 사이트 구성](website-hosting-custom-domain-walkthrough.md) 섹션을 참조하세요.

다음 예시 CORS 구성에는 `CORSRule` 요소로 지정된 규칙이 3개 있습니다.
+ 첫 번째 규칙은 `http://www.example1.com` 오리진에서 cross-origin PUT, POST, DELETE 요청을 허용합니다. 이 규칙은 또한 `Access-Control-Request-Headers` 헤더를 통해 preflight OPTIONS 요청의 모든 헤더를 허용합니다. Amazon S3은 preflight OPTIONS 요청에 대한 응답으로 요청된 헤더를 반환합니다.
+ 두 번째 규칙은 첫 번째 규칙과 같이 cross-origin 요청을 허용하지만 다른 오리진인 `http://www.example2.com`에 적용됩니다.
+ 세 번째 규칙은 모든 오리진에서 cross-origin GET 요청을 허용합니다. `*` 와일드카드 문자는 모든 오리진을 나타냅니다.

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

```
[
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "PUT",
            "POST",
            "DELETE"
        ],
        "AllowedOrigins": [
            "http://www.example1.com"
        ],
        "ExposeHeaders": []
    },
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "PUT",
            "POST",
            "DELETE"
        ],
        "AllowedOrigins": [
            "http://www.example2.com"
        ],
        "ExposeHeaders": []
    },
    {
        "AllowedHeaders": [],
        "AllowedMethods": [
            "GET"
        ],
        "AllowedOrigins": [
            "*"
        ],
        "ExposeHeaders": []
    }
]
```

------
#### [ XML ]

```
<CORSConfiguration>
 <CORSRule>
   <AllowedOrigin>http://www.example1.com</AllowedOrigin>

   <AllowedMethod>PUT</AllowedMethod>
   <AllowedMethod>POST</AllowedMethod>
   <AllowedMethod>DELETE</AllowedMethod>

   <AllowedHeader>*</AllowedHeader>
 </CORSRule>
 <CORSRule>
   <AllowedOrigin>http://www.example2.com</AllowedOrigin>

   <AllowedMethod>PUT</AllowedMethod>
   <AllowedMethod>POST</AllowedMethod>
   <AllowedMethod>DELETE</AllowedMethod>

   <AllowedHeader>*</AllowedHeader>
 </CORSRule>
 <CORSRule>
   <AllowedOrigin>*</AllowedOrigin>
   <AllowedMethod>GET</AllowedMethod>
 </CORSRule>
</CORSConfiguration>
```

------

CORS 구성은 다음에서 볼 수 있듯이 선택적인 구성 파라미터도 허용합니다. 이 예제에서 CORS 구성은 `http://www.example.com` 오리진으로부터의 cross-origin PUT, POST 및 DELETE 요청을 허용합니다.

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

```
[
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "PUT",
            "POST",
            "DELETE"
        ],
        "AllowedOrigins": [
            "http://www.example.com"
        ],
        "ExposeHeaders": [
            "x-amz-server-side-encryption",
            "x-amz-request-id",
            "x-amz-id-2"
        ],
        "MaxAgeSeconds": 3000
    }
]
```

------
#### [ XML ]

```
<CORSConfiguration>
 <CORSRule>
   <AllowedOrigin>http://www.example.com</AllowedOrigin>
   <AllowedMethod>PUT</AllowedMethod>
   <AllowedMethod>POST</AllowedMethod>
   <AllowedMethod>DELETE</AllowedMethod>
   <AllowedHeader>*</AllowedHeader>
  <MaxAgeSeconds>3000</MaxAgeSeconds>
  <ExposeHeader>x-amz-server-side-encryption</ExposeHeader>
  <ExposeHeader>x-amz-request-id</ExposeHeader>
  <ExposeHeader>x-amz-id-2</ExposeHeader>
 </CORSRule>
</CORSConfiguration>
```

------

이전 구성에서 `CORSRule` 요소는 다음의 선택적 요소를 포함합니다.
+ `MaxAgeSeconds` - 브라우저가 지정된 리소스에 대한 Amazon S3 preflight OPTIONS 요청 응답을 캐시하는 시간을 초 단위(이 예에서는 3000)로 지정합니다. 원래 요청이 반복될 경우, 브라우저는 이 응답을 캐시함으로써 Amazon S3에 preflight 요청을 보낼 필요가 없습니다.
+ `ExposeHeaders` - 고객이 자체 애플리케이션(예: JavaScript `x-amz-server-side-encryption` 객체)에서 액세스할 수 있는 응답 헤더(이 예에서는 `x-amz-request-id`, `x-amz-id-2`, `XMLHttpRequest`)를 식별합니다.