Configuração de CORS - Amazon Simple Storage Service

Configuração de CORS

Para configurar seu bucket para permitir solicitações de origem cruzada, crie uma configuração CORS. A configuração CORS é um documento com regras que identificam as origens que você permitirá que acessem seu bucket, as operações (métodos HTTP) compatíveis com cada origem e outras informações específicas da operação. Você pode adicionar até 100 regras à configuração. Você pode adicionar a configuração CORS como o sub-recurso cors ao bucket.

Se você estiver configurando o CORS no console do S3, use o JSON para criar uma configuração CORS. O novo console do S3 oferece suporte somente a configurações JSON CORS.

Para obter mais informações sobre a configuração de CORS e os elementos nele, consulte os tópicos a seguir. Para obter instruções sobre como adicionar uma configuração de CORS, consulte Configurar o compartilhamento de recursos de origem cruzada (CORS).

Importante

No novo console do S3, a configuração CORS deve ser JSON.

Exemplo 1

Em vez de acessar um site usando um endpoint do Amazon S3, você pode usar seu próprio domínio, como example1.com para distribuir seu conteúdo. Para obter informações sobre como usar seu próprio domínio, consulte Tutorial: Configurar um site estático usando um domínio personalizado registrado no Route 53.

A configuração de exemplo cors a seguir tem três regras especificadas como elementos CORSRule:

  • A primeira regra permite solicitações PUT, POST e DELETE de origem cruzada da origem http://www.example1.com. A regra também permite todos os cabeçalhos em uma solicitação OPTIONS de simulação por meio do cabeçalho Access-Control-Request-Headers. Em resposta a solicitações OPTIONS de simulação, o Amazon S3 retorna cabeçalhos solicitados.

  • A segunda regra permite as mesmas solicitações de origem cruzada da primeira regra, mas a regra se aplica a outra origem, http://www.example2.com.

  • A terceira regra permite solicitações GET de origem cruzada de todas as origens. O caractere curinga * refere-se a todas as origens.

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>

Exemplo 2

A configuração de CORS também permite parâmetros de configuração opcionais, conforme exibido na configuração de CORS a seguir. Neste exemplo, a configuração de CORS permite solicitações PUT, POST e DELETE de origem cruzada da origem 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>

O elemento CORSRule na configuração anterior inclui os seguintes elementos opcionais:

  • MaxAgeSeconds: Especifica o tempo em segundos (neste exemplo, 3000) que o navegador armazena em cache uma resposta do Amazon S3 a uma solicitação OPTIONS de simulação para o recurso especificado. Armazenando a resposta em cache, o navegador não precisará enviar solicitações de simulação ao Amazon S3, caso a solicitação original seja repetida.

  • ExposeHeader — Identifica os cabeçalhos de resposta (neste exemplo, x-amz-server-side-encryption, x-amz-request-id e x-amz-id-2) que os clientes podem acessar de seus aplicativos (por exemplo, de um objeto JavaScript XMLHttpRequest).

Elemento AllowedMethod

Na configuração de CORS, você pode especificar os seguintes valores para o elemento AllowedMethod.

  • GET

  • PUT

  • POST

  • DELETE

  • HEAD

Elemento AllowedOrigin

No elemento AllowedOrigin, você especifica as origens das quais deseja permitir solicitações de domínio cruzado, por exemplo, http://www.example.com. A string de origem pode conter somente um caractere curinga *, como http://*.example.com. É possível especificar * como a origem para permitir que todas as origens enviem solicitações de origem cruzada. Você também pode especificar https para permitir somente origens confiáveis.

Elemento AllowedHeader

O elemento AllowedHeader especifica quais cabeçalhos são permitidos em uma solicitação de simulação por meio do cabeçalho Access-Control-Request-Headers. Cada nome no cabeçalho Access-Control-Request-Headers deve coincidir com uma entrada correspondente na regra. O Amazon S3 enviará somente os cabeçalhos permitidos que foram solicitados em uma resposta. Para obter uma lista de exemplos de cabeçalhos que podem ser usados em solicitações para o Amazon S3, acesse Cabeçalhos de solicitação comuns no guia de Referência da API do Amazon Simple Storage Service.

Cada string de AllowedHeader na regra pode conter no máximo um caractere curinga *. Por exemplo, <AllowedHeader>x-amz-*</AllowedHeader> permitirá todos os cabeçalhos específicos da Amazon.

Elemento ExposeHeader

Cada elemento ExposeHeader identifica um cabeçalho na resposta que você deseja que os clientes acessem de seus aplicativos (por exemplo, de um objeto JavaScript XMLHttpRequest). Para obter uma lista de cabeçalhos de resposta comuns do Amazon S3, acesse Cabeçalhos de resposta comuns no guia de Referência da API do Amazon Simple Storage Service .

Elemento MaxAgeSeconds

O elemento MaxAgeSeconds especifica o tempo em segundos que seu navegador pode armazenar em cache a resposta para uma solicitação de simulação conforme identificado pelo recurso, pelo método HTTP e pela origem.