CORS 구성 요소

CORS 구성 요소

버킷이 교차 출처 요청을 허용하도록 구성하려면 CORS 구성을 만들어요. CORS 구성은 버킷에 접근하도록 허용할 출처, 각 출처에 대해 지원할 작업(HTTP 메서드), 그리고 기타 작업별 정보를 식별하는 요소가 담긴 문서예요. 구성에는 최대 100개의 규칙을 추가할 수 있어요. CORS 구성을 버킷의 cors 하위 리소스로 추가할 수 있어요.

출처: 문서

본문

S3 콘솔에서 CORS를 구성한다면 JSON으로 CORS 구성을 만들어야 해요. 새 S3 콘솔은 JSON CORS 구성만 지원해요.

CORS 구성과 그 요소에 대한 자세한 내용은 아래 주제들을 참고하세요. CORS 구성을 추가하는 방법은 교차 출처 리소스 공유(CORS) 구성을 참고하세요.

중요 S3 콘솔에서 CORS 구성은 JSON이어야 해요.

AllowedMethods 요소 (AllowedMethods element)

CORS 구성에서 AllowedMethods 요소에는 다음 값을 지정할 수 있어요.

  • GET
  • PUT
  • POST
  • DELETE
  • HEAD

AllowedOrigins 요소 (AllowedOrigins element)

AllowedOrigins 요소에는 교차 도메인 요청을 허용하려는 출처를 지정해요(예: http://www.example.com). 출처 문자열에는 * 와일드카드 문자를 하나만 포함할 수 있어요(예: http://*.example.com). 모든 출처가 교차 출처 요청을 보내도록 하려면 출처로 *를 지정할 수 있어요. 보안 출처만 활성화하려면 https를 지정할 수도 있어요.

AllowedHeaders 요소 (AllowedHeaders element)

AllowedHeaders 요소는 Access-Control-Request-Headers 헤더를 통해 사전 확인(preflight) 요청에서 허용되는 헤더를 지정해요. Access-Control-Request-Headers 헤더의 각 헤더 이름은 요소의 해당 항목과 일치해야 해요. Amazon S3는 요청된 허용 헤더만 응답에서 보내요. Amazon S3에 대한 요청에 사용할 수 있는 헤더 샘플 목록은 Amazon Simple Storage Service API Reference의 Common Request Headers를 참고하세요.

구성의 각 AllowedHeaders 문자열에는 * 와일드카드 문자를 최대 하나까지 포함할 수 있어요. 예를 들어 <AllowedHeader>x-amz-*</AllowedHeader>는 모든 Amazon 관련 헤더를 활성화해요.

ExposeHeaders 요소 (ExposeHeaders element)

각 ExposeHeader 요소는 고객이 자신의 애플리케이션(예: JavaScript XMLHttpRequest 객체)에서 접근할 수 있도록 허용하려는 응답 헤더를 식별해요. 일반적인 Amazon S3 응답 헤더 목록은 Amazon Simple Storage Service API Reference의 Common Response Headers를 참고하세요.

MaxAgeSeconds 요소 (MaxAgeSeconds element)

MaxAgeSeconds 요소는 리소스, HTTP 메서드, 출처로 식별된 사전 확인 요청의 응답을 브라우저가 캐시할 수 있는 시간(초)을 지정해요.

CORS 구성 예시 (Examples of CORS configurations)

Amazon S3 웹사이트 엔드포인트를 사용해 웹사이트에 접근하는 대신 example1.com 같은 자신의 도메인으로 콘텐츠를 제공할 수도 있어요. 자신의 도메인 사용에 대한 자세한 내용은 튜토리얼: Route 53에 등록된 사용자 지정 도메인으로 정적 웹사이트 구성을 참고하세요.

다음 예시 CORS 구성에는 CORSRule 요소로 지정된 규칙 세 개가 있어요.

  • 첫 번째 규칙은 http://www.example1.com 출처의 교차 출처 PUT, POST, DELETE 요청을 허용해요. 이 규칙은 Access-Control-Request-Headers 헤더를 통한 사전 확인 OPTIONS 요청의 모든 헤더도 허용해요. 사전 확인 OPTIONS 요청에 대한 응답으로 Amazon S3는 요청된 헤더를 반환해요.
  • 두 번째 규칙은 첫 번째 규칙과 같은 교차 출처 요청을 허용하지만, 다른 출처 http://www.example2.com에 적용돼요.
  • 세 번째 규칙은 모든 출처의 교차 출처 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 구성과 같이 선택적 구성 파라미터도 허용해요. 이 예시에서 CORS 구성은 http://www.example.com 출처의 교차 출처 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 — 지정된 리소스에 대한 사전 확인 OPTIONS 요청의 Amazon S3 응답을 브라우저가 캐시하는 시간(초, 이 예시에서는 3000)을 지정해요. 응답을 캐시하면 원래 요청이 반복될 경우 브라우저가 Amazon S3에 사전 확인 요청을 보낼 필요가 없어요.
  • ExposeHeaders — 고객이 자신의 애플리케이션(예: JavaScript XMLHttpRequest 객체)에서 접근할 수 있는 응답 헤더(이 예시에서는 x-amz-server-side-encryption, x-amz-request-id, x-amz-id-2)를 식별해요.

더 알아보기 (Learn more)