

# Elementos de uma configuração de CORS
<a name="ManageCorsUsing"></a>

Para configurar seu bucket para permitir solicitações de origem cruzada, crie uma configuração CORS. A configuração de CORS é um documento com elementos que identificam as origens que você permitirá que acessem o 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)](enabling-cors-examples.md).

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

**Topics**
+ [`AllowedMethods`Elemento](#cors-allowed-methods)
+ [`AllowedOrigins`Elemento](#cors-allowed-origin)
+ [`AllowedHeaders`Elemento](#cors-allowed-headers)
+ [`ExposeHeaders`Elemento](#cors-expose-headers)
+ [`MaxAgeSeconds`Elemento](#cors-max-age)
+ [Exemplos de configurações de CORS](#cors-example-1)

## `AllowedMethods`Elemento
<a name="cors-allowed-methods"></a>

Na configuração de CORS, você pode especificar os seguintes valores para o elemento `AllowedMethods`.
+ GET
+ PUT
+ POST
+ DELETE
+ HEAD

## `AllowedOrigins`Elemento
<a name="cors-allowed-origin"></a>

No elemento `AllowedOrigins`, 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.

## `AllowedHeaders`Elemento
<a name="cors-allowed-headers"></a>

O elemento `AllowedHeaders` 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 no elemento. 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](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonRequestHeaders.html) no guia de *Referência da API do Amazon Simple Storage Service*.

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

## `ExposeHeaders`Elemento
<a name="cors-expose-headers"></a>

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](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonResponseHeaders.html) no guia de *Referência da API do Amazon Simple Storage Service* .

## `MaxAgeSeconds`Elemento
<a name="cors-max-age"></a>

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.

## Exemplos de configurações de CORS
<a name="cors-example-1"></a>

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](website-hosting-custom-domain-walkthrough.md). 

O seguinte exemplo de configuração de CORS 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>
```

------

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. 
+ `ExposeHeaders` — 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`).