

# 교차 오리진 리소스 공유(CORS) 사용
<a name="cors"></a>

CORS(Cross-origin 리소스 공유)는 한 도메인에서 로드되어 다른 도메인에 있는 리소스와 상호 작용하는 클라이언트 웹 애플리케이션에 대한 방법을 정의합니다. CORS 지원을 통해 Amazon S3으로 다양한 기능의 클라이언트 측 웹 애플리케이션을 구축하고, Amazon S3 리소스에 대한 Cross-Origin 액세스를 선택적으로 허용할 수 있습니다.

이 섹션에서는 CORS 개요를 다룹니다. 하위 섹션에서는 Amazon S3 콘솔을 사용하거나 프로그래밍 방식으로 Amazon S3 REST API 및 AWS SDK를 사용하여 CORS를 사용하는 방법을 설명합니다.

## CORS(Cross-Origin Resource Sharing): 사용 사례 시나리오
<a name="example-scenarios-cors"></a>

다음은 CORS 사용에 대한 예제 시나리오입니다.

**시나리오 1**  
`website`에서 설명한 대로 [Amazon S3를 사용하여 정적 웹 사이트 호스팅](WebsiteHosting.md)라는 이름의 Amazon S3 버킷에서 웹 사이트를 호스팅한다고 가정해 보겠습니다. 사용자는 웹 사이트 엔드포인트를 로드합니다.

```
http://website.s3-website.us-east-1.amazonaws.com
```

이제 이 버킷에 저장된 웹 페이지의 JavaScript를 사용하여, `website.s3.us-east-1.amazonaws.com` 버킷에 대한 Amazon S3의 API 엔드포인트를 사용하여 같은 버킷에 대해 GET 및 PUT 요청 인증을 가능하게 하려고 합니다. 일반적으로 브라우저에서 이러한 요청을 허용하지 못하도록 JavaScript를 차단하지만, CORS를 사용하여 `website.s3-website.us-east-1.amazonaws.com`으로부터의 cross-origin 요청을 사용 설정하도록 버킷을 구성할 수 있습니다.

**시나리오 2**  
S3 버킷에서 웹 글꼴을 호스팅한다고 가정해 보겠습니다. 브라우저는 웹 글꼴을 불러오기 위해 CORS 검사(preflight check라고도 함)가 필요하므로, 이 웹 글꼴을 호스팅하는 버킷이 이러한 요청을 하는 오리진을 허용하도록 구성합니다.

## Amazon S3은 버킷의 CORS 구성을 어떻게 평가하나요?
<a name="cors-eval-criteria"></a>

Amazon S3이 브라우저에서 preflight 요청을 받으면 버킷에 대한 CORS 구성을 평가하고 수신된 브라우저 요청과 일치하는 첫 번째 `CORSRule` 규칙을 사용하여 Cross-Origin 요청을 허용합니다. 규칙이 일치하려면 다음 조건이 충족되어야 합니다.
+ 버킷에 대한 CORS 요청의 `Origin` 헤더는 CORS 구성의 `AllowedOrigins` 요소에 있는 오리진과 일치해야 합니다.
+ 버킷에 대한 CORS 요청의 `Access-Control-Request-Method`에 지정된 HTTP 메서드는 CORS 구성의 `AllowedMethods` 요소에 나열된 메서드와 일치해야 합니다.
+ 사전 요청의 `Access-Control-Request-Headers` 헤더에 나열된 헤더는 CORS 구성의 `AllowedHeaders` 요소에 있는 헤더와 일치해야 합니다.

**참고**  
버킷에 대해 CORS를 허용하면 ACL과 정책이 계속 적용됩니다.

## 객체 Lambda 액세스 포인트가 CORS를 지원하는 방법
<a name="cors-olap-cors"></a>

브라우저로부터 요청을 받거나 요청에 `Origin` 헤더가 포함된 경우 S3 Object Lambda는 항상 `"AllowedOrigins":"*"` 헤더 필드를 추가합니다.

CORS 사용에 대한 자세한 내용은 다음 주제를 참조하십시오.

**Topics**
+ [CORS(Cross-Origin Resource Sharing): 사용 사례 시나리오](#example-scenarios-cors)
+ [Amazon S3은 버킷의 CORS 구성을 어떻게 평가하나요?](#cors-eval-criteria)
+ [객체 Lambda 액세스 포인트가 CORS를 지원하는 방법](#cors-olap-cors)
+ [CORS 구성의 요소](ManageCorsUsing.md)
+ [교차 오리진 리소스 공유(CORS) 구성](enabling-cors-examples.md)
+ [CORS 테스트](testing-cors.md)
+ [CORS 문제 해결](cors-troubleshooting.md)