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 resuelvo este problema de CORs? Rails 6, ruby-saml

Estoy tratando de seguir el código de ejemplo de ruby-saml para hacer la redirección saliente y me encuentro con una excepción de CORs.

El código en cuestión es:

request = OneLogin::RubySaml::Authrequest.new
redirect_to(request.create(saml_settings))

Cuando intento llamar a esto a través de axios, obtengo un preflight OPTIONS que me rechaza con un 302 y:

La respuesta a la solicitud de preflight no supera la comprobación de control de acceso: No se permite la redirección para una solicitud de preflight.

Hasta ahora, he intentado rack-cors, rails-reverse-proxy y varias otras cosas, pero no puedo superar este bloqueo.

¿Alguien tiene algunas instrucciones útiles sobre cómo solucionar esto? ¿Por qué la redirección no se está manejando como una solicitud simple? Es decir, ¿por qué estoy obteniendo el preflight OPTIONS? ¿Hay alguna forma de hacer que esto sea una solicitud simple?

Alguien mencionó que necesitaré hacer una proxy a través de algo como Nginx, pero eso parece excesivo.

Rails 6, React si importa.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que estás encontrando un problema de CORS al realizar una solicitud desde tu aplicación de React al servicio de Ruby on Rails. Específicamente, el problema está relacionado con una solicitud previa, que es una solicitud OPTIONS generada automáticamente por el navegador para verificar si el servidor permite solicitudes desde el origen actual.

    Dado que se trata de una redirección, se considera una solicitud no simple y, por lo tanto, requiere una verificación previa. Sin embargo, la redirección no está permitida como parte de la solicitud previa, lo que resulta en un error de CORS.

    Una forma de resolver este problema es hacer que la solicitud pase a través de un servidor intermediario que se encuentre entre tu aplicación de React y el servicio de Ruby on Rails. Este servidor intermediario puede manejar la verificación previa y modificar las cabeceras para permitir la redirección. Nginx es una opción popular para este propósito, pero también hay otras opciones, como Apache o HAProxy.

    Alternativamente, puedes modificar la configuración de CORS del servidor para permitir explícitamente la redirección en las solicitudes previas. Esto se puede hacer con las cabeceras Access-Control-Allow-Headers y Access-Control-Allow-Methods. Sin embargo, esta puede no ser una solución ideal, ya que puede comprometer la seguridad de tu aplicación.

    En resumen, para solucionar el problema de CORS al realizar una solicitud de redirección desde tu aplicación de React al servicio de Ruby on Rails, puedes hacer que la solicitud pase a través de un servidor intermediario o modificar la configuración de CORS del servidor para permitir la redirección en las solicitudes previas.

Comments are closed.