Selecione suas preferências de cookies

Usamos cookies essenciais e ferramentas semelhantes que são necessárias para fornecer nosso site e serviços. Usamos cookies de desempenho para coletar estatísticas anônimas, para que possamos entender como os clientes usam nosso site e fazer as devidas melhorias. Cookies essenciais não podem ser desativados, mas você pode clicar em “Personalizar” ou “Recusar” para recusar cookies de desempenho.

Se você concordar, a AWS e terceiros aprovados também usarão cookies para fornecer recursos úteis do site, lembrar suas preferências e exibir conteúdo relevante, incluindo publicidade relevante. Para aceitar ou recusar todos os cookies não essenciais, clique em “Aceitar” ou “Recusar”. Para fazer escolhas mais detalhadas, clique em “Personalizar”.

CORS para APIs REST no API Gateway

Modo de foco
CORS para APIs REST no API Gateway - Amazon API Gateway

O compartilhamento de recursos entre origens (CORS) é um recurso de segurança de navegador que restringe as solicitações HTTP entre origens que são iniciadas em scripts em execução no navegador. Consulte mais informações em O que é CORS?.

Determinar se deseja habilitar o suporte ao CORS

Uma solicitação HTTP entre origens é uma solicitação que é feita para:

  • Um domínio diferente (por exemplo, de example.com para amazondomains.com)

  • Um subdomínio diferente (por exemplo, de example.com para petstore.example.com)

  • Uma porta diferente (por exemplo, de example.com para example.com:10777)

  • Um protocolo diferente (por exemplo, de https://example.com para http://example.com)

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.

As solicitações HTTP entre origens podem ser divididas em dois tipos: solicitações simples e solicitações não simples.

Habilitar o CORS para uma solicitação simples

Uma solicitação HTTP será simples se todas as condições a seguir forem verdadeiras:

  • Ela é emitida em relação a um recurso de API que permite apenas solicitações POST, GET e HEAD.

  • Se for uma solicitação de método POST, deverá incluir um cabeçalho Origin.

  • O tipo de conteúdo da carga da solicitação é text/plain, multipart/form-data ou application/x-www-form-urlencoded.

  • A solicitação não contém cabeçalhos personalizados.

  • Quaisquer requisitos adicionais que estão listados na Documentação do Mozilla CORS para solicitações simples.

Para solicitações simples do método POST de origem cruzada, a resposta de seu recurso precisa incluir o cabeçalho Access-Control-Allow-Origin: '*' ou Access-Control-Allow-Origin:'origin'.

Todas as outras solicitações HTTP entre origens são solicitações não simples.

Habilitar o CORS para uma solicitação não simples

Se os recursos de sua API receberem solicitações não simples, você deverá habilitar o suporte CORS adicional, dependendo de seu tipo de integração.

Habilitar o CORS para integrações sem proxy

Para essas integrações, o protocolo CORS exige que o navegador envie uma solicitação de simulação ao servidor e aguarde a aprovação (ou uma solicitação de credenciais) do servidor antes de enviar a solicitação real. Você deve configurar sua API para enviar uma resposta apropriada à solicitação de simulação.

Como criar uma resposta de simulação:

  1. Crie um método OPTIONS com uma integração de simulação.

  2. Adicione os seguintes cabeçalhos de resposta à resposta do método 200:

    • Access-Control-Allow-Headers

    • Access-Control-Allow-Methods

    • Access-Control-Allow-Origin

  3. Defina o comportamento de passagem da integração como NEVER. Nesse caso, a solicitação de método de um tipo de conteúdo não mapeado será rejeitada com uma resposta HTTP 415 Tipo de mídia incompatível. Para ter mais informações, consulte Comportamentos de passagem direta de integração.

  4. Insira valores para os cabeçalhos de resposta. Para possibilitar todas as origens, todos os métodos e cabeçalhos comuns, use os seguintes valores de cabeçalho:

    • Access-Control-Allow-Headers: 'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token'

    • Access-Control-Allow-Methods: '*'

    • Access-Control-Allow-Origin: '*'

Depois de criar a solicitação de simulação, você deve retornar o cabeçalho Access-Control-Allow-Origin: '*' ou Access-Control-Allow-Origin:'origin' para todos os métodos habilitados para CORS para pelo menos todas as 200 respostas.

Habilitar o CORS para integrações sem proxy usando o AWS Management Console

Você pode usar o AWS Management Console para habilitar o CORS. O API Gateway cria um método OPTIONS e tenta adiciona o cabeçalho Access-Control-Allow-Origin às respostas de integração de métodos existentes. Isso nem sempre funciona e, às vezes, você precisa modificar manualmente a resposta de integração para retornar o cabeçalho Access-Control-Allow-Origin de todos os métodos habilitados para CORS para pelo menos todas as 200 respostas.

Habilitar o suporte ao CORS para integrações de proxy

Para uma integração de proxy do Lambda ou integração de proxy HTTP, seu back-end é responsável por retornar os cabeçalhos Access-Control-Allow-OriginAccess-Control-Allow-Methods e Access-Control-Allow-Headers, porque uma integração de proxy não retorna uma resposta de integração.

As seguintes funções de exemplo do Lambda retornam os cabeçalhos de CORS necessários:

Node.js
export const handler = async (event) => { const response = { statusCode: 200, headers: { "Access-Control-Allow-Headers" : "Content-Type", "Access-Control-Allow-Origin": "https://www.example.com", "Access-Control-Allow-Methods": "OPTIONS,POST,GET" }, body: JSON.stringify('Hello from Lambda!'), }; return response; };
Python 3
import json def lambda_handler(event, context): return { 'statusCode': 200, 'headers': { 'Access-Control-Allow-Headers': 'Content-Type', 'Access-Control-Allow-Origin': 'https://www.example.com', 'Access-Control-Allow-Methods': 'OPTIONS,POST,GET' }, 'body': json.dumps('Hello from Lambda!') }
export const handler = async (event) => { const response = { statusCode: 200, headers: { "Access-Control-Allow-Headers" : "Content-Type", "Access-Control-Allow-Origin": "https://www.example.com", "Access-Control-Allow-Methods": "OPTIONS,POST,GET" }, body: JSON.stringify('Hello from Lambda!'), }; return response; };
PrivacidadeTermos do sitePreferências de cookies
© 2025, Amazon Web Services, Inc. ou suas afiliadas. Todos os direitos reservados.