Pregunta de entrevista para Desarrollador frontend

Tu fetch a la API falla con un error de CORS en el navegador, pero la misma petición funciona bien con curl. ¿Qué está pasando y qué haces?

Qué evalúa el entrevistador, cómo estructurar tu respuesta y un ejemplo hablado que puedes adaptar.

Respuesta rápida

CORS lo aplica el navegador, no el servidor, así que curl nunca lo ve. Probablemente la petición llegó al servidor y la respuesta simplemente no traía una cabecera de origen permitido que el navegador aceptara, o falló un preflight OPTIONS. Revisa en la pestaña de red la petición OPTIONS y sus cabeceras de respuesta, confirma que el origen, los métodos y las cabeceras permitidos cubren tu llamada, y recuerda que con credenciales hace falta un origen explícito más allow credentials, nunca un comodín.

Por qué lo preguntan los entrevistadores

Todo desarrollador frontend se topa con esto, y la respuesta revela si entiendes el modelo de seguridad del navegador o solo copias una configuración de proxy hasta que el error desaparece. El entrevistador quiere oír que CORS protege la respuesta, que un preflight lo disparan métodos, cabeceras o tipos de contenido no simples, y que la solución va en el servidor. Sugerir que desactives la seguridad web del navegador es un suspenso.

Cómo estructurar tu respuesta

  • Di que lo aplica el navegador, que es la razón por la que curl funciona.
  • Separa el preflight de la petición real en la pestaña de red.
  • Relaciona el mensaje de error concreto con la cabecera que falta.
  • Di dónde va la solución y qué le pedirías al backend.

Ejemplo de respuesta

Ejemplo hablado, en primera persona

Lo primero que digo es que CORS es una regla del navegador, no del servidor, así que que curl funcione no me dice nada salvo que el endpoint está levantado. El navegador hizo la petición, o un preflight para ella, y se negó a entregarme la respuesta porque las cabeceras no permitían mi origen. Así que abro la pestaña de red y busco primero una petición OPTIONS. Si está ahí y devuelve un 4xx, el preflight en sí está fallando, normalmente porque añadí una cabecera personalizada o un content type JSON que lo sacó de la categoría de petición simple, y la lista de cabeceras permitidas del servidor no la incluye. Si no hay preflight, entonces a la respuesta real le falta una cabecera de origen permitido que coincida con el mío. La solución es del lado del servidor. En desarrollo local paso por un proxy del servidor de desarrollo para que mi origen coincida, pero me aseguro de que las cabeceras reales también estén configuradas, o si no se rompe en staging. Y si la llamada envía cookies, el servidor tiene que devolver un origen concreto más allow credentials, ya que en ese caso un comodín se rechaza.

¿Tienes esta entrevista a la vuelta de la esquina? GhostPilot escucha tu llamada en vivo, detecta la pregunta en cuanto la hacen y pone una respuesta estructurada en tu pantalla en tiempo real. Pruébalo en tu próxima entrevista de práctica, o coge un Session Pass de $29, sin suscripción, para la de verdad.

Mira cómo funciona

Preguntas de seguimiento que puedes esperar

  • ¿Qué hace que una petición sea lo bastante simple como para saltarse el preflight?
  • ¿Por qué un origen comodín no funciona con peticiones con credenciales?
  • ¿Cómo depurarías esto si la pestaña de red no muestra ninguna respuesta?

Más preguntas para Desarrollador frontend

Tu entrevistador hará su propia versión de esta. Pega la descripción real del puesto en el Question Predictor gratuito y obtén las 20 preguntas que ese puesto tiene más probabilidades de hacerte, con lo que cada una busca en realidad.

Predecir mis preguntas

Ensaya las preguntas difíciles antes de que te las hagan

Practica con un copiloto en vivo y entra preparado. Un Session Pass de $29 te lleva a través de la entrevista sin suscripción y sin ataduras.

Consigue GhostPilot