CORS 구성 - Amazon Simple Storage Service

CORS 구성

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

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

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

중요

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

예 1

Amazon S3 웹 사이트 엔드포인트를 사용하여 웹 사이트에 액세스하는 대신, example1.com과 같은 자체 도메인을 사용하여 콘텐츠를 제공할 수 있습니다. 자체 도메인 사용에 대한 자세한 내용은 자습서: Route 53에 등록된 사용자 지정 도메인을 사용하여 정적 웹 사이트 구성 단원을 참조하십시오.

다음 예시 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>

예 2

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 요청을 보낼 필요가 없습니다.

  • ExposeHeader - 고객이 자체 애플리케이션(예: JavaScript x-amz-server-side-encryption 객체)에서 액세스할 수 있는 응답 헤더(이 예에서는 x-amz-request-id, x-amz-id-2, XMLHttpRequest)를 식별합니다.

AllowedMethod 요소

CORS 구성에서 AllowedMethod 요소에 대한 다음 값을 지정할 수 있습니다.

  • GET

  • PUT

  • POST

  • DELETE

  • HEAD

AllowedOrigin 요소

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

AllowedHeader 요소

AllowedHeader 요소는 Access-Control-Request-Headers 헤더를 통해 preflight 요청에 허용되는 헤더를 지정합니다. Access-Control-Request-Headers 헤더의 각 헤더 이름은 규칙의 해당 항목과 일치해야 합니다. Amazon S3은 요청된 응답에서 허용된 헤더만을 보냅니다. Amazon S3에 대한 요청에 사용할 수 있는 샘플 헤더 목록을 보려면 Amazon Simple Storage Service API 참조 가이드의 공통 요청 헤더를 참조하십시오.

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

ExposeHeader 요소

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

MaxAgeSeconds 요소

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