Pergunta de entrevista para Desenvolvedor Frontend

Seu fetch para a API falha com erro de CORS no navegador mas a mesma requisição funciona no curl. O que está acontecendo e o que você faz?

O que o entrevistador está avaliando, como estruturar sua resposta e um exemplo falado que você pode adaptar.

Resposta rápida

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

Exemplo falado, em primeira pessoa

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 funciona

Perguntas 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

Ensaie as perguntas difíceis antes que elas apareçam

Pratique com um copiloto ao vivo e depois entre pronto. Um Session Pass de $29 te leva até o fim da entrevista, sem assinatura e sem amarras.

Instalar o GhostPilot