Todas as ferramentas

CORS tester

Informe a URL que você chama e a origem de onde chama. Fazemos a requisição do nosso servidor e dizemos qual cabeçalho Access-Control está faltando ou errado.

A requisição que você quer fazer

A URL completa para onde a requisição vai, com o caminho.
O esquema e o host de onde a sua página é servida, sem caminho.
Separados por vírgula, e deixe vazio se a requisição não envia cabeçalhos próprios. Citar content-type conta como cabeçalho próprio, porque o navegador fazer preflight depende do valor que você envia. Os comuns como accept não são perguntados, porque o navegador também não pergunta por eles.

Esta ferramenta roda nos nossos servidores. Fazemos a requisição a partir de um endereço público e mostramos os cabeçalhos que voltaram, e nunca enviamos os seus cookies nem um corpo.

O que é CORS e o que é um preflight

Um navegador não deixa uma origem ler a resposta de outra a menos que a segunda autorize. Ela autoriza com Access-Control-Allow-Origin na resposta. Para qualquer coisa além de um GET ou POST simples com cabeçalhos comuns, o navegador pergunta antes com uma requisição OPTIONS chamada preflight, e só envia a requisição de verdade se a resposta permitir o método e os cabeçalhos que ele vai usar.

Como ler o veredito

Cada linha é um cabeçalho que o navegador olha, com o valor que voltou ao lado. Uma linha marcada como falha é um motivo para a requisição ser bloqueada, e o aviso no topo nomeia o primeiro, porque é o que se resolve antes. Linhas marcadas como informação não mudam nada sozinhas. Embaixo estão a requisição exata que enviamos e os cabeçalhos que voltaram, para você passar a troca inteira para quem cuida do servidor.

Qual cabeçalho resolve qual falha

Access-Control-Allow-Origin é o primeiro a enviar, e precisa nomear a sua origem exatamente, com esquema e porta, ou ser um asterisco. Access-Control-Allow-Methods e Access-Control-Allow-Headers só valem no preflight, e cada um precisa listar o que o navegador pediu. Access-Control-Allow-Credentials precisa ser a string true antes de os cookies irem junto, e não combina com uma origem em asterisco. Access-Control-Expose-Headers é o que deixa o JavaScript ler algo além do punhado de cabeçalhos que os navegadores entregam por padrão.

Pare de adivinhar qual cabeçalho o servidor não enviou

Uma requisição bloqueada parece igual de fora, seja qual for a causa. O Session Replay grava a requisição, os cabeçalhos da resposta e a linha do console juntos, então quem olhar depois já tem tudo na frente.