

# Configurar CORS para APIs HTTP no API Gateway
<a name="http-api-cors"></a>

O [compartilhamento de recursos entre origens (CORS)](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) é um recurso de segurança de navegador que restringe as solicitações HTTP que são iniciadas em scripts em execução no navegador. Se você não conseguir acessar sua API e receber uma mensagem de erro contendo `Cross-Origin Request Blocked`, talvez seja necessário habilitar o CORS. Consulte mais informações em [O que é CORS?](https://aws.amazon.com/what-is/cross-origin-resource-sharing/).

Normalmente o CORS é necessário para criar aplicativos Web que acessem APIs hospedadas em um domínio ou origem diferente. O CORS pode ser habilitado para permitir solicitações para sua API a partir de um aplicativo Web hospedado em um domínio diferente. Por exemplo, se sua API estiver hospedada em `https://{api_id}.execute-api.{region}.amazonaws.com/`, e você quiser chamar sua API a partir de um aplicativo web hospedado no `example.com`, sua API deverá ser compatível com CORS.

Se você configurar o CORS para uma API, o API Gateway enviará automaticamente uma resposta às solicitações de comprovação OPTIONS, mesmo que não haja uma rota OPTIONS configurada para sua API. Para uma solicitação CORS, o API Gateway adiciona os cabeçalhos de CORS configurados à resposta de uma integração.

**nota**  
Se você configurar CORS para uma API, o API Gateway ignorará os cabeçalhos de CORS retornados de sua integração de backend.

Em uma configuração de CORS, é possível especificar os parâmetros a seguir. Para adicionar esses parâmetros usando o console da API HTTP do API Gateway, selecione **Adicionar** depois de inserir o valor.


| Cabeçalhos de CORS | Propriedade da configuração de CORS | Exemplos de valores | 
| --- | --- | --- | 
|  Access-Control-Allow-Origin  |  allowOrigins  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/apigateway/latest/developerguide/http-api-cors.html)  | 
|  Access-Control-Allow-Credentials  |  allowCredentials  |  true  | 
|  Access-Control-Expose-Headers  |  exposeHeaders  |  date, x-api-id, \$1  | 
|  Access-Control-Max-Age  |  maxAge  |  300  | 
|  Access-Control-Allow-Methods  |  allowMethods  |  GET, POST, DELETE, \$1  | 
|  Access-Control-Allow-Headers  |  allowHeaders  |  authorization, \$1  | 

Para retornar cabeçalhos CORS, sua solicitação deve conter um cabeçalho `origin`. Para o método `OPTIONS`, sua solicitação deve conter um cabeçalho `origin` e um cabeçalho `Access-Control-Request-Method`.

A configuração de CORS pode parecer com a seguinte imagem:

![\[Configuração de CORS para APIs HTTP\]](http://docs.aws.amazon.com/pt_br/apigateway/latest/developerguide/images/http-cors-console.png)


## Configurar o CORS para uma API HTTP com uma rota `$default` e um autorizador
<a name="http-api-cors-default-route"></a>

É possível habilitar o CORS e configurar a autorização para qualquer rota de uma API HTTP. Quando você habilita o CORS e a autorização para a [rota `$default`](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-routes.html#http-api-develop-routes.default), há algumas considerações especiais. A rota `$default` captura solicitações para todos os métodos e rotas não definidos explicitamente, inclusive solicitações `OPTIONS`. Para oferecer suporte a solicitações `OPTIONS` não autorizadas, adicione uma rota `OPTIONS /{proxy+}` à API que não exija autorização e anexe uma integração à rota. A rota `OPTIONS /{proxy+}` tem prioridade mais alta que a `$default`. Como resultado, ela permite que os clientes enviem solicitações `OPTIONS` para a API sem autorização. Para obter mais informações sobre prioridades de roteamento, consulte [Rotear solicitações de API](http-api-develop-routes.md#http-api-develop-routes.evaluation).

## Configurar o CORS para uma API HTTP usando a CLI da AWS
<a name="http-api-cors.example"></a>

O comando [update-api](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/update-api.html) a seguir habilita as solicitações de CORS em `https://www.example.com`.

**Example**  

```
aws apigatewayv2 update-api --api-id api-id --cors-configuration AllowOrigins="https://www.example.com"
```

Para obter mais informações, consulte [CORS](https://docs.aws.amazon.com/apigatewayv2/latest/api-reference/apis-apiid.html#apis-apiid-model-cors) na Referência de API do Amazon API Gateway versão 2.