교차 오리진 리소스 공유(CORS) 사용
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): 사용 사례 시나리오
다음은 CORS 사용에 대한 예제 시나리오입니다.
시나리오 1
Amazon S3를 사용하여 정적 웹 사이트 호스팅에서 설명한 대로 website
라는 이름의 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 구성을 어떻게 평가하나요?
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를 지원하는 방법
브라우저로부터 요청을 받거나 요청에 Origin
헤더가 포함된 경우 S3 Object Lambda는 항상 “AllowedOrigins":"*"
헤더 필드를 추가합니다.
CORS 사용에 대한 자세한 내용은 다음 주제를 참조하십시오.