Configuración de CORS - Amazon Simple Storage Service

Configuración de CORS

Para configurar su bucket para permitir solicitudes entre orígenes, debe crear una configuración CORS. La configuración CORS es un documento con reglas que identifican los orígenes desde los que se permitirá el acceso al bucket, las operaciones (métodos HTTP) que permitirá para cada origen y otro tipo de información específica de cada operación. Puede añadir hasta 100 reglas a la configuración. Puede agregar la configuración de CORS como recurso secundario cors al bucket.

Si está configurando CORS en la consola S3, debe utilizar JSON para crear una configuración CORS. La nueva consola de S3 solo admite configuraciones de CORS JSON.

Para obtener más información acerca de la configuración de CORS y los elementos que contiene, consulte los temas siguientes. Para obtener instrucciones sobre cómo agregar una configuración CORS, consulte Configuración del uso compartido de recursos entre orígenes (CORS).

importante

En la consola de S3, la configuración de CORS debe ser JSON.

Ejemplo 1

En lugar de obtener acceso a un sitio web con el punto de conexión del sitio web de Amazon S3, puede usar su propio dominio, como example1.com, para servir su contenido. Para obtener información acerca de su propio dominio, consulte Tutorial: Configuración de un sitio web estático mediante un dominio personalizado registrado con Route 53.

En el siguiente ejemplo, la configuración cors tiene tres reglas, que se especifican como elementos CORSRule:

  • La primera regla permite solicitudes PUT, POST y DELETE entre orígenes del origen http://www.example1.com. La regla también permite todos los encabezados en una solicitud OPTIONS de comprobación preliminar a través del encabezado Access-Control-Request-Headers. Como respuesta a solicitudes OPTIONS de comprobación preliminar, Amazon S3 devuelve los encabezados solicitados.

  • La segunda regla permite las mismas solicitudes entre orígenes que la primera, pero se aplica a otro origen, http://www.example2.com.

  • La tercera regla permite solicitudes GET entre orígenes de todos los orígenes. El carácter comodín * hace referencia a todos los orígenes.

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>

Ejemplo 2

La configuración CORS también permite parámetros de configuración opcionales, como se muestra en la siguiente configuración CORS. En este ejemplo, la configuración CORS permite las solicitudes PUT, POST y DELETE entre orígenes desde el origen http://www.example.com.

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>

El elemento CORSRule en la configuración anterior incluye los siguientes elementos opcionales:

  • MaxAgeSeconds: especifica la cantidad de tiempo en segundos (en este ejemplo, 3000) que el navegador almacena en caché una respuesta de Amazon S3 a una solicitud OPTIONS de comprobación preliminar para el recurso especificado. Mediante el almacenamiento en caché de la respuesta, el navegador no tiene que enviar solicitudes de comprobación preliminar a Amazon S3 si se repetirá la solicitud original.

  • ExposeHeader: identifica los encabezados de respuesta (en este ejemplo, x-amz-server-side-encryption, x-amz-request-id y x-amz-id-2) a los que los clientes pueden obtener acceso desde sus aplicaciones (por ejemplo, desde un objeto XMLHttpRequest con código JavaScript).

Elemento AllowedMethod

En la configuración CORS, puede especificar los siguientes valores para el elemento AllowedMethod:

  • GET

  • PUT

  • POST

  • ELIMINAR

  • HEAD

Elemento AllowedOrigin

En el elemento AllowedOrigin, se especifican los orígenes desde los cuales desea permitir solicitudes entre dominios, por ejemplo, http://www.example.com. La cadena de origen solo puede contener un carácter comodín *, como http://*.example.com. Como alternativa, se puede especificar el carácter * como el origen para habilitar el envío de solicitudes entre orígenes de todos los orígenes. Se puede también especificar el método https para solo habilitar orígenes seguros.

Elemento AllowedHeader

El elemento AllowedHeader especifica qué encabezados se permiten en una solicitud de comprobación preliminar a través del encabezado Access-Control-Request-Headers. Cada nombre de encabezado en el encabezado Access-Control-Request-Headers debe coincidir con una entrada correspondiente en la regla. Amazon S3 solo envía los encabezados permitidos en una respuesta que se solicitaron. Para ver una lista de muestra de los encabezados que se pueden usar en las solicitudes que se envían a Amazon S3, consulte el tema sobre encabezados de solicitud comunes en la guía de referencia de API de Amazon Simple Storage Service.

Cada cadena con el elemento AllowedHeader en la regla puede contener como máximo un carácter comodín *. Por ejemplo, el elemento <AllowedHeader>x-amz-*</AllowedHeader> habilita los encabezados exclusivos de Amazon.

Elemento ExposeHeader

Cada elemento ExposeHeader identifica un encabezado en la respuesta al que desea que los clientes puedan obtener acceso desde sus aplicaciones (por ejemplo, desde un objeto XMLHttpRequest con código JavaScript). Para ver una lista de encabezados de respuesta comunes de Amazon S3, vaya al tema sobre encabezados de respuesta comunes en la guía de referencia de API de Amazon Simple Storage Service .

Elemento MaxAgeSeconds

El elemento MaxAgeSeconds especifica el tiempo en segundos que el navegador puede almacenar en caché la respuesta de una solicitud de comprobación preliminar según la identifica el recurso, el método HTTP y el origen.