Texto e documentos
Números e cálculo
Dados e formatos
Segurança
Desenvolvimento e DevOps
Inteligência Artificial
Finanças
Saúde & Bem-estar
Produtividade
Jogos & Entretenimento
Multimédia e design
Empresa
Guia de utilização
O que é e para que serve

O CORS (Cross-Origin Resource Sharing) controla se um site pode chamar uma API de outra origem. Esta ferramenta simula essa verificação do navegador e explica-te, sem fazer nenhum pedido real, se o teu servidor permitiria a chamada.

O que introduzir

Preenche a Origem (o URL da app que faz o pedido), o Método HTTP (GET, POST, PUT…) e cola os headers de resposta do teu servidor, um por linha (por exemplo Access-Control-Allow-Origin: *).

Pedido simples vs preflight

Há duas formas de pedido cross-origin:

Pedido simples — com GET, POST ou HEAD e cabeçalhos básicos, o navegador envia-o diretamente e depois verifica se a resposta traz Access-Control-Allow-Origin.
Com preflight — com métodos como PUT, PATCH ou DELETE (ou cabeçalhos personalizados), o navegador envia antes um pedido prévio do tipo OPTIONS para pedir permissão. A ferramenta assinala automaticamente quando o seu método requer preflight.

Preflight (OPTIONS)

Alguns métodos e headers obrigam o navegador a enviar antes um pedido preflight com o método OPTIONS. Se a ferramenta o detetar, o teu servidor deve responder a esse OPTIONS com os headers CORS adequados.

Access-Control-Allow-Origin

É o cabeçalho imprescindível: indica que origem pode ler a resposta.

* — permite qualquer origem, mas não funciona com credenciais (cookies).
• Uma origem concreta, p. ex. https://myapp.com — só essa origem, e tem de coincidir exatamente com a sua Origem (protocolo + domínio + porta).

Se faltar este cabeçalho, ou o valor não coincidir com * nem com a sua origem, o pedido é bloqueado.

Access-Control-Allow-Methods

Lista os métodos HTTP que o servidor aceita de outra origem, separados por vírgulas (p. ex. GET, POST, PUT, DELETE). É relevante sobretudo no preflight. Se indicar este cabeçalho mas não incluir o seu método, a ferramenta assinala-o como problema e bloqueia o pedido. Se não o colocar, o método não é verificado.

Access-Control-Allow-Headers

Enumera que cabeçalhos de pedido o cliente pode enviar (p. ex. Content-Type, Authorization). O navegador exige-o no preflight quando o seu pedido envia cabeçalhos não padrão. Se a sua app enviar Authorization e aqui não aparecer, o navegador bloqueará a chamada.

Access-Control-Allow-Credentials

Com valor true permite enviar cookies e credenciais no pedido cross-origin.

Atenção, gotcha importante: as credenciais são incompatíveis com Access-Control-Allow-Origin: *. Se usar credenciais, a origem tem de ser específica (p. ex. https://myapp.com), nunca *. Combinar ambos faz com que o navegador rejeite a resposta.

Access-Control-Max-Age e Vary

Access-Control-Max-Age indica quantos segundos o navegador pode guardar em cache a resposta do preflight (p. ex. 86400 = 24 h), para não repetir o OPTIONS em cada chamada. A ferramenta inclui-o nos headers sugeridos quando o seu método precisa de preflight. Lembre-se ainda de adicionar Vary: Origin no seu servidor quando devolver uma origem concreta, para que as caches não misturem respostas de origens diferentes.

Como ler o resultado

O banner indica se o pedido está permitido ou bloqueado e porquê. Por baixo, explica-se cada header CORS detetado, listam-se os problemas encontrados e propõe-se um bloco de headers sugeridos pronto a copiar para o teu servidor.

CORS ExplainerAnalisa os headers CORS do teu servidor
CORS ExplainerAnalisa e explica os headers CORS do teu servidor
URL da app que faz o pedido

Márcalo si tu código usa credentials: 'include' (o withCredentials). Cambia las reglas: el origen ya no puede ser *, los comodines dejan de valer y el servidor tiene que responder Access-Control-Allow-Credentials: true.

Las de la PETICIÓN, no las de la respuesta. Son las que deciden si el navegador manda antes un OPTIONS, y las que «Access-Control-Allow-Headers» tiene que cubrir.

CORS permitido correctamente
El navegador mandará antes una petición OPTIONS (preflight), por el Content-Type application/json. Tu servidor tiene que contestar también a ESE OPTIONS, no solo a la petición real.

Headers CORS encontrados

Access-Control-Allow-Originhttps://myapp.comPermite solo el origen: https://myapp.com
Access-Control-Allow-MethodsPOSTMétodos permitidos: POST
Access-Control-Allow-HeadersContent-TypeCabeceras permitidas en la petición: Content-Type

Headers sugeridos para o teu servidor

Access-Control-Allow-Origin: https://myapp.com
Vary: Origin
Access-Control-Allow-Methods: POST
Access-Control-Allow-Headers: Content-Type
Access-Control-Max-Age: 86400
Esto se decide sobre las cabeceras que pegues, sin salir a la red — por eso vale también para una API local o privada. Si quieres lanzar la petición de VERDAD y ver si tu servidor llegó a contestar, está el Banco de trabajo de APIs.