Configurar CORS para APIs HTTP no API Gateway - Amazon API Gateway

Configurar CORS para APIs HTTP no API Gateway

O compartilhamento de recursos entre origens (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?.

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

  • https://www.example.com

  • * (permitir todas as origens)

  • https://* (permitir qualquer origem que comece com https://)

  • http://* (permitir qualquer origem que comece com http://)

Access-Control-Allow-Credentials

allowCredentials

true

Access-Control-Expose-Headers

exposeHeaders

Date, x-api-id, *

Access-Control-Max-Age

maxAge

300

Access-Control-Allow-Methods

allowMethods

GET, POST, DELETE, *

Access-Control-Allow-Headers

allowHeaders

Autorização, *

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

Configurar o CORS para uma API HTTP com uma rota $default e um autorizador

É 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, 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.

Configurar o CORS para uma API HTTP usando a CLI da AWS

É possível usar o comando update-api a seguir para habilitar as solicitações de CORS em https://www.example.com.

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

Para obter mais informações, consulte CORS na Referência de API do Amazon API Gateway versão 2.