CORS Checker
Verifique se uma API aceita requests do seu origin. Executa preflight OPTIONS e um request real, mostra todos os cabeçalhos Access-Control-*.
O que é CORS?
CORS (Cross-Origin Resource Sharing) é um mecanismo de segurança do navegador. Por padrão, um script em https://a.com não pode ler respostas de https://b.com. O servidor em b.com deve permitir isso enviando cabeçalhos Access-Control-Allow-Origin. Para requests não simples (POST com JSON, cabeçalhos custom, etc.), o navegador primeiro envia um OPTIONS "preflight" para checar permissão — se a resposta do servidor não permitir seu origin, método ou cabeçalhos, o request real é bloqueado e você vê um erro CORS no DevTools.
Cabeçalhos CORS de resposta explicados
Access-Control-Allow-OriginEspecifica qual origin é permitido. Um origin específico, "*" (qualquer), ou o origin do request repetido.
Access-Control-Allow-CredentialsSe "true", o navegador envia cookies/auth. Não pode ser combinado com Allow-Origin: *.
Access-Control-Allow-MethodsQuais métodos HTTP o servidor permite. Só relevante na resposta preflight.
Access-Control-Allow-HeadersQuais cabeçalhos de request o servidor permite. Relevante para cabeçalhos não simples como Authorization, X-*.
Access-Control-Expose-HeadersQuais cabeçalhos de resposta o navegador pode expor ao JavaScript. Por padrão só uma lista curta.
Access-Control-Max-AgeQuanto (segundos) o navegador pode cachear o resultado do preflight. Valores maiores evitam OPTIONS repetidos.
FAQ do CORS Checker
Por que meu navegador mostra erros CORS mas esta ferramenta mostra cabeçalhos?
CORS é aplicado pelo navegador, não pelo servidor. Esta ferramenta roda no nosso backend, então nenhuma regra CORS se aplica — vemos a resposta crua. Seu navegador bloqueia o request no cliente com base nos cabeçalhos Access-Control-*. Se os cabeçalhos aqui não combinarem com seu origin/método/cabeçalhos, o navegador bloqueará, mesmo que o servidor tenha respondido.
O que é um request OPTIONS preflight?
Para requests cross-origin "não simples" (qualquer coisa que não seja GET/HEAD/POST simples com cabeçalhos básicos), o navegador primeiro envia um OPTIONS perguntando "posso fazer este request?". O servidor responde com Access-Control-Allow-Methods, Allow-Headers e Allow-Origin. Se permitirem seu request real, o navegador prossegue. Caso contrário, bloqueia.
Por que Access-Control-Allow-Origin: * não é suficiente para meu request?
Se seu request inclui credentials (cookies, cabeçalho Authorization, cert cliente TLS), o navegador rejeita "*" e requer um origin específico. O servidor deve ecoar seu origin exato em Access-Control-Allow-Origin e definir Access-Control-Allow-Credentials: true.
CORS se aplica a requests server-to-server?
Não. CORS é puramente uma feature de segurança do navegador. curl, fetch do Node no servidor, Postman ou qualquer cliente não-navegador ignoram CORS. Se você vê "erro CORS" fora do navegador, o problema real está em outro lugar (rede, auth, URL errada).
Como corrijo um erro CORS?
Corrija no servidor, não no cliente. Adicione o Access-Control-Allow-Origin correto (seu origin de frontend), Allow-Methods (GET/POST/etc. que usa), Allow-Headers (cabeçalhos custom ou auth). Para credentials, Allow-Credentials: true. Garanta que OPTIONS seja tratado e retorne 2xx. Extensões de navegador que desabilitam CORS são atalho de dev — nunca implante uma app real dependendo delas.