Verificador de CORS

Verifique a configuração de Compartilhamento de Recursos de Origem Cruzada (CORS) para qualquer URL. Inspecione os cabeçalhos de resposta Access-Control-*, execute uma requisição de preflight (OPTIONS) opcional com uma Origem/método/cabeçalhos personalizados e detecte configurações incorretas comuns, como curinga + credenciais, ausência de Vary: Origin ou allow-headers excessivamente amplos.

Loading…

Sobre Verificador CORS

Cole uma URL de API ou página e verifique se os navegadores permitirão requisições de origem cruzada. Esta ferramenta analisa os cabeçalhos de resposta CORS, pode executar uma verificação realista de preflight (OPTIONS) e destaca configurações arriscadas ou quebradas (como "*" com credenciais, ausência de Vary: Origin ou allow-methods/allow-headers fracos).

Funcionalidades

  • Inspeção de cabeçalhos CORS para qualquer URL pública (Access-Control-* e cabeçalhos relacionados).
  • Simulação opcional de preflight (OPTIONS) com Origem, método de requisição e cabeçalhos de requisição personalizados.
  • Segue redirecionamentos (até 10) para que você valide o endpoint final que os navegadores realmente acessam.
  • Visualização de cabeçalhos brutos para total transparência e depuração.
  • Achados + cartão de pontuação com filtragem "apenas problemas" para triagem rápida.
  • Análise Vary para detectar ausência de Vary: Origin e outras armadilhas de CORS relacionadas ao cache.
  • Exporta resultados como relatórios JSON e PDF para auditorias, tickets e documentação.
  • Recomendações integradas para problemas comuns: curinga+credenciais, reflexão de Origem, Origem nula, ausência de allow-methods/allow-headers, ausência de max-age e allow-headers excessivamente amplos.

🧭 Como usar for cors-checker

1

Insira a URL de destino

Cole o endpoint que deseja testar (ex: https://api.example.com/resource).

2

Defina a Origem da qual está testando

Insira a Origem do seu aplicativo frontend (esquema + host), ex: https://app.example.com. Este é o valor que os navegadores enviam no cabeçalho Origin.

3

Escolha um modo de verificação

Use Automático (recomendado) para analisar tanto os cabeçalhos de resposta quanto o comportamento de preflight. Use Requisição simples se quiser especificamente um cenário sem preflight, ou Apenas preflight para executar verificações OPTIONS.

4

Configure os detalhes do preflight (se aplicável)

Ative "Executar Preflight (OPTIONS)" e defina o Método de Requisição mais os Cabeçalhos de Requisição (separados por vírgula) para simular o comportamento real de preflight do navegador (ex: autorização, content-type). Ative "Considerar credenciais" se seu caso de uso incluir cookies ou cabeçalhos de autenticação.

5

Revise os achados e exporte

Verifique os achados/cartão de pontuação e os detalhes da análise CORS. Ative "Mostrar Cabeçalhos Brutos" ao depurar. Exporte JSON/PDF para compartilhamento ou armazenamento em auditorias.

Especificações técnicas

Modelo de requisição

A ferramenta inspeciona os cabeçalhos CORS para uma URL de destino e pode, opcionalmente, realizar uma requisição de preflight (OPTIONS) usando a Origem, método e cabeçalhos solicitados fornecidos. O seguimento de redirecionamento é suportado.

ConfiguraçãoComportamentoPadrão
Modo de VerificaçãoAutomático, Solicitação Simples ou Apenas PreflightAutomático
Executar Preflight (OPTIONS)Se habilitado, realiza uma simulação de preflight OPTIONSHabilitado
OrigemValor do cabeçalho Origin usado para análise/preflighthttps://example.com
Método da SolicitaçãoValor Access-Control-Request-Method para preflightGET
Cabeçalhos da SolicitaçãoAccess-Control-Request-Headers (separados por vírgula) para preflightVazio
Seguir RedirecionamentosSegue a cadeia de redirecionamento até a URL finalHabilitado
Redirecionamentos MáximosLimite de redirecionamentos para evitar loops10 (intervalo 0–20)
Tempo LimiteLimite de tempo limite da solicitação15000 ms
User-AgentIdentifica o agente do usuário da solicitaçãoEncode64Bot/1.0 (+https://encode64.com)
Redes privadasBloqueia o acesso a intervalos de rede privada por segurançaDesabilitado (redes privadas não permitidas)

Cabeçalhos analisados (conjunto principal CORS)

O analisador foca nos cabeçalhos de resposta e solicitação CORS padrão usados pelos navegadores e verificações de preflight.

CabeçalhoPropósito
Access-Control-Allow-OriginQual(is) Origem(ns) são permitidos
Access-Control-Allow-CredentialsSe cookies/credenciais são permitidos (requer origem não curinga)
Access-Control-Allow-MethodsMétodos permitidos para requisições cross-origin (importante para preflight)
Access-Control-Allow-HeadersCabeçalhos permitidos (importante para Authorization e cabeçalhos personalizados)
Access-Control-Expose-HeadersQuais cabeçalhos são legíveis pelo JavaScript do navegador
Access-Control-Max-AgePor quanto tempo o preflight pode ser armazenado em cache pelo navegador
VaryVariação da chave de cache (ex.: Vary: Origin) para evitar envenenamento/mistura de cache
Origin / Access-Control-Request-*Usado para simular o comportamento de preflight

Heurísticas (armadilhas comuns de CORS sinalizadas)

As descobertas são baseadas em verificações práticas e com foco em segurança para detectar configurações de CORS quebradas ou arriscadas.

VerificaçãoPor que é importante
Curinga + credenciaisAccess-Control-Allow-Origin: * não pode ser usado com credenciais; navegadores bloquearão ou o comportamento é inseguro
Falta de Vary: OriginSe as respostas variam por Origin mas não são armazenadas em cache corretamente, caches compartilhados podem misturar respostas entre sites
Refletindo OriginRepetir cegamente o Origin pode permitir involuntariamente origens não confiáveis
Avisos de Origin nuloOrigin: null pode aparecer em iframes isolados ou contextos de arquivo; permiti-lo é frequentemente arriscado
Falta de Allow-Methods / Allow-HeadersO preflight pode falhar se o servidor não permitir explicitamente o método/cabeçalhos
Allow-Headers excessivamente amploPermitir muitos cabeçalhos pode expandir a superfície de ataque
Falta de Max-AgeO preflight pode ser executado com muita frequência, adicionando latência
CORS é um mecanismo de aplicação do navegador. Servidores ainda podem ser acessados cross-origin via clientes não-navegador; trate o CORS como parte de uma postura de segurança mais ampla, não como o único controle.

Linha de comando

Use estes comandos para reproduzir o comportamento de CORS e preflight do seu terminal. Eles são úteis para depuração e verificação do que a ferramenta relata.

macOS / Linux

Verifique os cabeçalhos CORS para uma requisição normal (simule uma Origin do navegador)

curl -i -H "Origin: https://example.com" https://api.example.com/resource

Procure por Access-Control-Allow-Origin, Access-Control-Allow-Credentials e Vary.

Execute uma requisição de preflight OPTIONS (método + cabeçalhos)

curl -i -X OPTIONS -H "Origin: https://app.example.com" -H "Access-Control-Request-Method: POST" -H "Access-Control-Request-Headers: authorization, content-type" https://api.example.com/private

O preflight deve retornar os Access-Control-Allow-Methods e Access-Control-Allow-Headers corretos para o navegador prosseguir.

Seguir redirecionamentos enquanto verifica os cabeçalhos

curl -iL -H "Origin: https://example.com" https://api.example.com

Útil quando os endpoints redirecionam para um host diferente que possui regras de CORS distintas.

Windows (PowerShell)

Inspecionar cabeçalhos de resposta com um cabeçalho Origin

$r = Invoke-WebRequest -Uri https://api.example.com/resource -Headers @{ Origin = "https://example.com" }; $r.Headers

Exibe os cabeçalhos Access-Control-* se estiverem presentes.

Se seu frontend usa cookies ou autenticação, evite CORS permissivo. Prefira uma lista de permissões explícita de origens confiáveis e inclua Vary: Origin quando as respostas diferirem por origem.

Casos de uso

Depurar um erro de navegador "CORS bloqueado" no frontend

Quando fetch/XHR falha com um erro de CORS, verifique se o servidor retorna os cabeçalhos Access-Control-* necessários para sua Origem e tipo de solicitação.

  • Confirmar que Access-Control-Allow-Origin corresponde à origem do seu aplicativo
  • Se estiver usando cookies/autenticação, verifique se Access-Control-Allow-Credentials é true (e a origem não é curinga)
  • Garantir que Vary: Origin esteja presente ao permitir múltiplas origens

Validar preflight para Authorization / cabeçalhos personalizados

A maioria das chamadas de API autenticadas aciona preflight devido a Authorization ou tipos de conteúdo não simples. Esta ferramenta ajuda a garantir que as respostas OPTIONS permitam o método e os cabeçalhos necessários.

  • Verificar se Access-Control-Allow-Methods inclui POST/PUT/PATCH/DELETE conforme necessário
  • Verificar se Access-Control-Allow-Headers inclui authorization, content-type e os cabeçalhos X-* necessários
  • Capturar allow-methods/allow-headers ausentes antes da implantação

Revisão de segurança da política de CORS

Configurações incorretas de CORS podem expor APIs privadas a sites maliciosos sem intenção (especialmente com credenciais). Use as descobertas para identificar padrões de alto risco.

  • Detectar origem curinga combinada com credenciais
  • Detectar padrões de origem refletida que permitem sites arbitrários
  • Sinalizar permissão para Origin: null quando não for intencional

Melhorar o desempenho armazenando preflight em cache

Solicitações de preflight adicionam viagens de ida e volta e latência. Um Max-Age correto pode reduzir verificações de preflight repetidas para APIs estáveis.

  • Verificar se Access-Control-Max-Age está presente quando apropriado
  • Reduzir chamadas OPTIONS repetidas para tráfego frequente de API

❓ Frequently Asked Questions

O que é CORS em termos simples?

CORS (Cross-Origin Resource Sharing) é um mecanismo de segurança do navegador que controla se uma página da web de uma origem (esquema + host + porta) pode ler respostas de outra origem. Ele depende de cabeçalhos de resposta Access-Control-* específicos.

Quando um navegador envia uma solicitação de preflight (OPTIONS)?

Um preflight é enviado quando a solicitação não é "simples", por exemplo, ao usar métodos como POST com certos tipos de conteúdo ou ao enviar cabeçalhos como Authorization ou cabeçalhos personalizados X-*. O navegador verifica as permissões via OPTIONS antes de enviar a solicitação real.

Por que "Access-Control-Allow-Origin: *" é perigoso com credenciais?

Os navegadores exigem uma origem explícita quando credenciais estão envolvidas. Usar curinga com credenciais é inválido para solicitações com credenciais e indica uma configuração arriscada. Prefira uma lista de permissões explícita de origens confiáveis.

Por que preciso de Vary: Origin?

Se seu servidor retorna valores diferentes de Access-Control-Allow-Origin dependendo da Origem da solicitação, os caches devem variar por Origem para evitar servir uma resposta destinada a um site para outro. Vary: Origin ajuda a evitar mistura de cache e problemas de segurança relacionados.

O CORS pode proteger minha API de clientes que não são navegadores?

Não. O CORS é aplicado pelos navegadores. Scripts executados fora de um navegador (servidores, curl, aplicativos móveis) podem chamar sua API independentemente do CORS. Use autenticação, autorização e limitação de taxa para um controle de acesso real.

O que devo colocar em "Cabeçalhos da Solicitação" ao testar o preflight?

Liste os cabeçalhos que seu frontend enviará, separados por vírgula (por exemplo, authorization, content-type, x-request-id). Isso simula o Access-Control-Request-Headers e verifica se o servidor os permite.

É seguro colar URLs aqui?

A ferramenta faz solicitações do lado do servidor para a URL fornecida e bloqueia destinos de rede privada. Evite incluir segredos nas URLs (como tokens em strings de consulta) e prefira endpoints públicos nos quais você confia.

Pro Tips

Best Practice

Prefira uma lista de permissões de origens confiáveis em vez de refletir qualquer Origin. Trate o CORS como uma configuração sensível à segurança.

Best Practice

Se você usar cookies/autenticação, defina Access-Control-Allow-Credentials: true E retorne uma origem explícita (não "*").

Best Practice

Adicione Vary: Origin ao permitir múltiplas origens ou ao selecionar dinamicamente a origem permitida.

Best Practice

Adicione um Access-Control-Max-Age razoável para reduzir a latência de preflight em APIs estáveis.

Best Practice

Teste tanto o caminho de preflight quanto o da solicitação real; algumas configurações retornam cabeçalhos corretos para GET, mas falham em OPTIONS.

CI Tip

Exporte relatórios JSON e mantenha-os junto com as alterações de configuração do gateway da API para identificar regressões rapidamente.

Additional Resources

Other Tools