Esa llamada OPTIONS es el preflight de CORS. Los navegadores la envían siempre que una petición de origen cruzado no es simple, lo que cubre cualquier cabecera personalizada, un content type JSON o un método distinto de GET, HEAD o POST. Tu servidor tiene que responder a ese OPTIONS con Access-Control-Allow-Origin, Allow-Methods y Allow-Headers que cubran de verdad la petición real, más Allow-Credentials y un origen concreto si hay cookies de por medio.
Por qué lo preguntan los entrevistadores
A todo el mundo le ha bloqueado CORS; muchos menos saben explicarlo. El entrevistador quiere saber si entiendes que CORS es una política aplicada por el navegador que protege al usuario, no un control de acceso del servidor, porque quienes se pierden eso suelen proponer desactivarlo o rodearlo con un proxy de formas que abren agujeros de seguridad reales. Nombrar las reglas de petición simple demuestra que lo depuraste como es debido en vez de pegar un comodín.
Cómo estructurar tu respuesta
- Di qué dispara un preflight frente a una petición simple.
- Enumera las cabeceras de respuesta que el servidor debe devolver.
- Cubre el caso con credenciales y por qué ahí fallan los comodines.
- Aclara que CORS protege al usuario del navegador, no a tu servidor.
Ejemplo de respuesta
El preflight es el navegador pidiendo permiso antes de enviar nada con efectos secundarios. Un GET normal sin cabeceras personalizadas es una petición simple y sale directa, pero en cuanto añades una cabecera Authorization o envías application/json, te llega antes el OPTIONS. Cuando falla, compruebo tres cosas en orden: si el servidor responde a OPTIONS siquiera, si Access-Control-Allow-Headers lista todas las cabeceras que envía la petición real, y si el origen se devuelve exactamente igual incluyendo esquema y puerto. El caso con credenciales pilla a mucha gente, porque si envías cookies no puedes usar un origen comodín; tienes que reflejar un origen permitido concreto y poner Access-Control-Allow-Credentials en true. También configuro Access-Control-Max-Age para que el navegador deje de hacer preflight en cada llamada. Lo que me aseguro de que un equipo entienda es que nada de esto protege la API. Cualquier cosa que no sea un navegador ignora CORS por completo, así que la autorización sigue teniendo que aplicarse en el servidor.
¿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 funcionaPreguntas de seguimiento que puedes esperar
- ¿Por qué no puedes usar un origen comodín con credenciales?
- ¿Qué hace realmente Access-Control-Max-Age?
- ¿Cómo gestionarías una integración legítima de terceros que llama a esta API?
Más preguntas para Desarrollador full stack
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