Ao usar o AWS re:Post, você concorda com os AWS re:Post Termos de uso

Como solucionar erros de CORS da minha API do API Gateway?

5 minuto de leitura
0

Recebo o erro “Nenhum cabeçalho 'Access-Control-Allow-Origin' está presente no recurso solicitado” quando tento invocar minha API do Amazon API Gateway. Quero solucionar esse erro e outros erros de CORS do API Gateway.

Breve descrição

Erros de compartilhamento de recursos entre origens (CORS) ocorrem quando um servidor não retorna os cabeçalhos HTTP exigidos pelo padrão CORS. Para resolver um erro de CORS em uma API REST do API Gateway ou API HTTP, você deve reconfigurar a API para atender ao padrão CORS.

Observação: você deve configurar o CORS no nível do recurso. Use configurações de API Gateway ou integrações de back-end, como o AWS Lambda.

Resolução

Além do erro do CORS No 'Access-Control-Allow-Origin' header present, você pode usar o procedimento a seguir para solucionar todos os erros do CORS. Outros erros do CORS incluem Method not supported under Access-Control-Allow-Methods header e No 'Access-Control-Allow-Headers' headers present.

O erro No 'Access-Control-Allow-Origin' header present pode ocorrer pelos seguintes motivos:

  • A API não está configurada com um método OPTIONS que retorna os cabeçalhos CORS necessários.
  • Você não configurou outros tipos de método, como GET, PUT ou POST, para retornar os cabeçalhos CORS necessários.
  • Uma API com integração de proxy ou integração sem proxy não está configurada para retornar os cabeçalhos CORS necessários.
  • Para APIs REST privadas, o URL de invocação incorreto é chamado. Ou o tráfego não é roteado para o endpoint de nuvem privada virtual (VPC) da interface.

Confirme a causa do erro

Execute a seguinte ação:

  • Ao invocar sua API, crie um arquivo HTTP Archive (HAR). Em seguida, verifique os cabeçalhos dos parâmetros que são retornados na resposta da API para confirmar a causa do erro do arquivo.
  • Use as ferramentas do desenvolvedor no seu navegador para verificar os parâmetros da solicitação e da resposta da solicitação de API com falha.

Configurar o CORS no recurso de API que falhou

Para APIs REST

Siga as instruções para Ativar o CORS em um recurso usando o console do API Gateway.

Para APIs HTTP

Siga as instruções em Como configurar o CORS para uma API HTTP.

Ao configurar o CORS em seu recurso de API, selecione as seguintes opções:

Para respostas do Gateway, selecione DEFAULT 4XX e ** DEFAULT 5XX**. Quando você seleciona DEFAULT 4XX e DEFAULT 5XX, o API Gateway responde com os cabeçalhos CORS necessários mesmo quando uma solicitação não chega ao endpoint. Por exemplo, se uma solicitação incluir um caminho de recurso incorreto, o API Gateway ainda responderá com um o erro 403 “Missing Authentication Token”.

Para Access-Control-Allow-Methods, se OPTIONS ainda não estiver selecionado, selecione-o e todos os outros métodos disponíveis para solicitações CORS, como GET, PUT e POST. O console do API Gateway configura a resposta 200 do método OPTIONS com os cabeçalhos Access-Control-Allow necessários e substitui os valores existentes no recurso reconfigurado.

Configure as integrações da API REST para retornar os cabeçalhos CORS necessários

Para retornar os cabeçalhos CORS necessários em sua resposta, configure sua função do Lambda de back-end ou servidor HTTP. Você deve incluir domínios permitidos no valor do cabeçalho Access-Control-Allow-Origin como uma lista.

Para integrações de proxy, você não pode configurar uma resposta de integração no API Gateway para modificar os parâmetros de resposta retornados pelo backend da sua API. Em uma integração de proxy, o API Gateway encaminha a resposta do backend diretamente ao cliente.

Se você usar uma integração sem proxy, deverá configurar manualmente uma resposta de integração no API Gateway para retornar os cabeçalhos CORS necessários. Use o console do API Gateway para configurar o CORS porque o console adiciona automaticamente os cabeçalhos CORS necessários ao recurso configurado.

(Somente para APIs REST privadas) Verificar a configuração de DNS privado do endpoint da interface

Para APIs REST privadas, determine se o DNS privado está ativado no endpoint da VPC da interface associado.

O DNS privado está ativado

Use o nome DNS privado para invocar sua API privada de dentro da sua Amazon Virtual Private Cloud (Amazon VPC).

O DNS privado não está ativado

Você deverá rotear manualmente o tráfego do URL de invocação até os endereços IP do endpoint da VPC. Use o seguinte URL de invocação (alias Route53):

https://{rest-api-id}-{vpce-id}.execute-api.{region}.amazonaws.com/{stage}

Observação: substitua rest-api-id, region, vpce-id e stage pelos valores da sua API. Para obter mais informações, consulte Como invocar uma API privada.

Se o DNS privado não estiver ativado, você não poderá usar nomes de DNS públicos específicos do endpoint para acessar sua API privada de dentro do seu Amazon VPC. Não é possível usar a opção de cabeçalho Host, pois as solicitações de um navegador não permitem a manipulação do cabeçalho Host.

Não é possível usar o cabeçalho personalizado x-apigw-api-id, pois ele inicia uma solicitação OPTIONS de simulação que não inclui o cabeçalho. As chamadas de API que usam o cabeçalho x-apigw-api-id não chegarão à API.

Observação: certifique-se de que a autorização esteja desativada no método OPTIONS da sua API.

Informações relacionadas

Testar o CORS

Ative o CORS em um recurso usando a API de importação do API Gateway