Pular para o conteúdo

Testador de CORS

CORS Tester

Envia o preflight que um navegador enviaria de uma origem escolhida mais um GET com aquele Origin, e explica pelas regras do padrão Fetch exatamente qual header bloqueou.

Uma falha de CORS no console nomeia o cabeçalho que faltou e quase nunca o motivo, e a requisição que o navegador realmente enviou não é a que está no seu código. Esta ferramenta envia o preflight que um navegador enviaria a partir de uma origem que você escolhe, depois um GET carregando essa Origin, e lê o resultado contra as regras do padrão Fetch.

☁️ Usa o nosso servidorcorshttpdebugweb

Nosso servidor faz esta requisição por você. Enviamos a ele apenas a URL, a origem, o método e os nomes de cabeçalho que você digita — nenhum dos seus cookies nem seu login vai junto. O servidor só se conecta a endereços públicos e recusa os privados e internos.

Um servidor envia o preflight (OPTIONS) que um navegador enviaria e depois a requisição em si, e o resultado é julgado pelas regras CORS do padrão Fetch. A requisição real é sempre um GET (ou HEAD) — isto não dispara um PUT nem um DELETE contra a API de outra pessoa em seu nome.

O esquema, o host e a porta da página web que faz a chamada.

application/json sempre dispara um preflight.

Como usar

  1. Informe a URL e a origem

    A origem é o site *de onde* a requisição viria — a página que faz a chamada, não a API. Trocar os dois é o motivo mais comum para um teste discordar do navegador.

  2. Adicione o método e os cabeçalhos que você realmente usa

    Um preflight só acontece para requisições não simples. `Content-Type: application/json` ou um cabeçalho `Authorization` é o que o dispara, então deixá-los de fora testa uma requisição que você nunca faz.

  3. Leia qual regra falhou

    O resultado nomeia a verificação específica — origem não permitida, método não listado, cabeçalho não listado, credenciais com origem curinga — em vez de relatar uma falha genérica.

Perguntas frequentes

Passa aqui, mas o navegador ainda bloqueia.

Confira se método, cabeçalhos e modo de credenciais correspondem exatamente ao que o seu código envia, e se o servidor não varia a resposta por cookie ou por user agent. Isto roda a partir de um servidor, então uma resposta que depende de uma sessão que você tem vai diferir.

Por que `Access-Control-Allow-Origin: *` não funciona com cookies?

O padrão proíbe. Com `credentials: 'include'`, a origem precisa ser ecoada literalmente e `Access-Control-Allow-Credentials: true` precisa estar presente. Curinga com credenciais é rejeitado por projeto, não por um bug.

Isto roda no meu navegador?

Não — roda a partir de um servidor, porque um navegador não consegue fazer a requisição que o CORS bloqueia. Isso significa que ele vê a resposta pública, sem os seus cookies nem a sua posição na rede.

Posso testar um endereço interno?

Não. A requisição parte de um servidor que não consegue alcançar a sua rede, e endereços que só resolvem dentro dela vão falhar independentemente da configuração de CORS.

Pode receber de

Em seguida

Estas aceitam o que esta ferramenta produz, então o resultado pode ir direto.