es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo recibe una solicitud de pre-vuelo encabezados sin tener una respuesta?

He estado leyendo sobre CORS y las solicitudes de pre-vuelo, y he entendido que básicamente es un tipo de solicitud OPTIONS que se envía antes de hacer la solicitud real y si el servidor lo permite, entonces se envía la solicitud real nuevamente. Pero lo que más me confunde es cómo el navegador puede recibir encabezados de respuesta sin recibir la respuesta real del servidor. ¿Se envían los encabezados independientemente de si se ha enviado o no una respuesta? Como se puede ver en el siguiente fragmento de código de nodejs, he creado un middleware que recibe la solicitud OPTIONS y responde con los encabezados necesarios para que se envíe la solicitud real. Y una vez que se valida en la misma ruta de login, el navegador envía la solicitud real. Pero debes haber notado que no estoy enviando una respuesta desde el controlador de la función de middleware OPTIONS, solo estoy enviando los encabezados. ¿Entonces cómo funciona todo esto? ¿cómo se envían los encabezados al navegador sin una respuesta?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Sí, se envían encabezados independientemente de si se ha enviado una respuesta o no. En el caso de una solicitud de pre-vuelo, el navegador solo está interesado en los encabezados de respuesta para determinar si se puede realizar o no la solicitud real de origen cruzado. El cuerpo de la respuesta no es necesario para esta decisión.

    En su fragmento de código, está respondiendo correctamente a la solicitud OPTIONS con los encabezados requeridos. El siguiente middleware en la cadena se encargará del método HTTP real (POST en este caso). Dado que ya ha enviado los encabezados requeridos en respuesta a la solicitud OPTIONS, el navegador ahora puede determinar si se puede realizar o no la solicitud POST real. Si el servidor no permite la solicitud POST, el navegador no realizará la solicitud real y, en su lugar, mostrará un error.

    En resumen, el navegador puede determinar si realizar o no la solicitud real de origen cruzado basándose únicamente en los encabezados de respuesta, sin necesidad del cuerpo de la respuesta.

Comments are closed.