CORS é imposto pelo navegador, não pelo servidor, então o curl nunca vê. A requisição provavelmente chegou ao servidor e a resposta simplesmente não trouxe um cabeçalho de origem permitida que o navegador aceitasse, ou um preflight OPTIONS falhou. Cheque na aba de rede a requisição OPTIONS e seus cabeçalhos de resposta, confirme que a origem, os métodos e os cabeçalhos permitidos cobrem a sua chamada, e lembre que credenciais exigem origem explícita mais allow credentials, nunca curinga.
Por que os entrevistadores perguntam isso
Todo desenvolvedor frontend esbarra nisso, e a resposta revela se você entende o modelo de segurança do navegador ou só copia uma configuração de proxy até o erro sumir. O entrevistador quer ouvir que CORS protege a resposta, que um preflight é disparado por métodos, cabeçalhos ou content types não simples, e que a correção pertence ao servidor. Sugerir desabilitar a segurança web no navegador é reprovação.
Como estruturar sua resposta
- Diga que quem impõe é o navegador, e por isso o curl funciona.
- Separe o preflight da requisição real na aba de rede.
- Mapeie a mensagem de erro específica ao cabeçalho faltante.
- Diga onde fica a correção e o que você pediria ao backend.
Exemplo de resposta
A primeira coisa que digo é que CORS é regra de navegador, não de servidor, então o curl funcionar não me diz nada além de que o endpoint está no ar. O navegador fez a requisição, ou um preflight para ela, e se recusou a me entregar a resposta porque os cabeçalhos não permitiam a minha origem. Então abro a aba de rede e procuro primeiro uma requisição OPTIONS. Se ela está lá e retorna 4xx, o próprio preflight está falhando, normalmente porque adicionei um cabeçalho customizado ou um content type JSON que tirou a requisição da categoria simples, e a lista de cabeçalhos permitidos do servidor não inclui aquilo. Se não há preflight, então a resposta real está sem um cabeçalho de origem permitida que combine com a minha origem. A correção é no servidor. No desenvolvimento local eu passo por um proxy no dev server para minha origem combinar, mas garanto que os cabeçalhos reais também estejam configurados, senão quebra no staging. E se a chamada envia cookies, o servidor precisa devolver uma origem específica mais allow credentials, já que curinga é rejeitado nesse caso.
Vai encarar essa entrevista em breve? O GhostPilot escuta a sua chamada ao vivo, identifica a pergunta no instante em que ela é feita e coloca uma resposta estruturada na sua tela em tempo real. Teste na sua próxima entrevista simulada ou pegue um Session Pass de $29, sem assinatura, para a hora da verdade.
Veja como funcionaPerguntas de acompanhamento que você pode esperar
- O que torna uma requisição simples o bastante para pular o preflight?
- Por que uma origem curinga não funciona com requisições com credenciais?
- Como você depuraria isso se a aba de rede não mostra resposta nenhuma?
Mais perguntas para Desenvolvedor Frontend
Seu entrevistador vai fazer a própria versão desta. Cole a descrição real da vaga no Question Predictor gratuito e receba as 20 perguntas que essa vaga tem mais chance de fazer, com o que cada uma está de fato sondando.
Prever minhas perguntas