Gerador e Testador de CORS — Corrija o “Blocked by CORS Policy”

Está vendo “has been blocked by CORS policy”? Descreva quem pode chamar sua API — origens, métodos, headers, credenciais — e receba os headers Access-Control-* corretos como código para Express, Nginx, Apache, Netlify, Vercel, Next.js, Cloudflare Workers ou PHP. Depois, teste uma URL real: o testador envia o mesmo preflight que um navegador enviaria e explica, header por header, se a requisição é permitida.

Atualizado em
Configuração CORS

Esta ferramenta busca pelo nosso servidor a URL pública que você digitar. Os resultados ficam alguns minutos na memória temporária e nunca são salvos em banco de dados.

Como usar: Gerador e Testador de CORS

  1. Em Gerar headers, liste as origens que podem chamar sua API (ou permita qualquer uma), marque os métodos e informe os headers de requisição que seu front-end envia — geralmente Content-Type e Authorization.
  2. Marque Permitir credenciais apenas se o navegador precisar enviar cookies ou um header Authorization com credentials: 'include'.
  3. Escolha sua plataforma e copie o código — Express, Nginx, Apache, Netlify, Vercel, Next.js, Workers ou PHP.
  4. Faça o deploy e depois mude para Testar uma URL: informe a URL da API e a origem da página para ver se o preflight e a requisição real passariam.

Por que os navegadores bloqueiam requisições

Uma página em https://app.example.com só consegue ler a resposta de https://api.example.com se a API autorizar isso com headers CORS. Para qualquer coisa além de um GET simples ou de um POST de formulário — corpos JSON, headers Authorization, PUT ou DELETE — o navegador envia primeiro um preflight: uma requisição OPTIONS que pergunta “esta origem pode usar este método e estes headers?”. Se a resposta estiver ausente ou errada, você verá “has been blocked by CORS policy” e seu código nunca receberá a resposta.

HeaderO que deve conter
Access-Control-Allow-OriginA origem que faz a chamada, exatamente, ou * (não permitido com credenciais)
Access-Control-Allow-MethodsO método da requisição real (somente no preflight)
Access-Control-Allow-HeadersTodos os headers de requisição não padrão, como Authorization ou Content-Type: application/json
Access-Control-Allow-Credentialstrue quando cookies ou credenciais são enviados
Access-Control-Max-AgePor quanto tempo o navegador pode guardar em cache a resposta do preflight
Vary: OriginNecessário quando a origem permitida muda a cada requisição, para que caches não entreguem a resposta de uma origem a outra

Como o testador funciona

Nosso servidor envia a requisição com um header Origin e, se o navegador precisaria de um, um preflight OPTIONS com Access-Control-Request-Method e -Headers — igual ao Chrome ou Firefox. Em seguida, confere a resposta com as regras de CORS que os navegadores aplicam. Servidores que permitem apenas certos endereços IP ou exigem cookies podem responder de forma diferente para usuários reais. Veja também: Verificador de Headers HTTP, Testador de API, Verificador de Security Headers.

Também pesquisado como: gerador de cors, testar cors, verificador cors, blocked by cors policy, access-control-allow-origin, teste de preflight cors, cors express, cors nginx.

Ferramentas que combinam com: Gerador e Testador de CORS

  • Gerador de CSP — Escolha o que seu site carrega — scripts, estilos, imagens, fontes, analytics, embeds — e gere uma Content-Security-Policy que permite exatamente isso, com avisos para configurações arriscadas.
  • Conversor cURL — Cole um comando curl, da documentação de uma API ou da opção “Copiar como cURL” do DevTools do seu navegador, e receba código pronto para usar em seis linguagens, com headers, corpo e autenticação preservados.
  • Gerador de configuração do Nginx — Escolha o que o Nginx deve fazer — servir um site estático ou um SPA, atuar como proxy para um aplicativo Node/Python ou executar PHP — e marque os recursos extras.
  • Analisador de Cabeçalho de E-mail — Cole os cabeçalhos brutos de um e-mail para ver todo o seu percurso: cada salto entre servidores com o tempo que levou, os resultados de SPF, DKIM e DMARC, o IP de origem e sinais de alerta, como um Reply-To ou Return-Path divergente.

Perguntas frequentes

Como corrijo “No Access-Control-Allow-Origin header is present”?
A API precisa enviar Access-Control-Allow-Origin com a origem da sua página (ou *). Gere a configuração para o seu servidor aqui, faça o deploy e rode o testador para confirmar. A correção sempre vai no servidor da API, nunca no código do front-end.
Por que não posso usar * com credenciais?
Os navegadores recusam Access-Control-Allow-Origin: * quando a requisição inclui cookies ou credenciais. Liste as origens exatas (ou repita a Origin da requisição depois de validá-la) e envie Access-Control-Allow-Credentials: true.
Por que minha API retorna 404 ou 405 para OPTIONS?
O preflight é uma requisição OPTIONS que suas rotas podem não tratar. Ele precisa retornar 2xx com os headers CORS — o código gerado responde OPTIONS com 204.
É seguro permitir qualquer origem?
Para APIs públicas somente leitura, sem cookies, * é aceitável. Para qualquer coisa que use login ou cookies, permita apenas as origens em que você confia — repetir qualquer origem com credenciais permite que qualquer site atue como seus usuários logados.

Ferramentas relacionadas