Errores CORS al redirigir en una respuesta

Estoy tratando de autenticarme con una API de terceros utilizando OAuth 2 a través de una API REST de NodeJS + Express. Estamos haciendo esto a través de una aplicación web ReactJS

El flujo actual es que enviamos una solicitud a nuestra API Express desde el front-end con la API Fetch, con un nombre de usuario como parámetro

Esta solicitud crea un objeto authUrl que contiene un redirect_url y luego responde con

devuelve res.redirect (authUrl);

Cuando iniciamos este punto final directamente desde el navegador, nos redirigen a la API de terceros y, después de autenticar a un usuario, se crea con éxito.

Pero el problema radica cuando intentamos enviar una solicitud a este punto final desde el front-end. Agregamos los encabezados CORS a nuestra aplicación Express para poder llegar a este punto final, pero aún así nos dio el siguiente error:

Fetch API no puede cargar NUESTRO ENDPOINT . La política de CORS ha bloqueado la redirección de ‘ NUESTRO PUNTO DE PUNTO ‘ a ‘ API DE TERCEROS ‘: La solicitud requiere verificación previa, que no está permitida para seguir el redireccionamiento de origen cruzado.

Cuando hacemos un res.json (authUrl) en lugar de res.redirect (authUrl) , recuperamos una respuesta adecuada que contiene la URL. Pero la redirección no parece funcionar.

Experimentamos un poco con diferentes encabezados, pero parece que no podemos encontrar una solución adecuada.

¿Entonces nos preguntábamos si res.redirect () maneja las solicitudes de manera diferente? ¿Estamos implementando el flujo de OAuth correctamente? ¿Necesitamos encabezados específicos?

¡Cualquier ayuda sera bienvenida!

Resumen de nuestro flujo:

  • El navegador recibe la solicitud de front-end
  • El usuario ingresa su nombre y hace clic en el botón de registro
  • Nuestra API Rest recibe la solicitud y crea una url de autenticación
  • La API de Rest envía una respuesta que redirige el navegador a la autenticación.
  • Después de la autenticación exitosa, un tercero envía una confirmación al punto final de callback de nuestra API Rest.
  • Con la confirmación, la API Rest (Resto) luego envía otra solicitud a la API de terceros.
  • La API Rest devuelve una respuesta a la aplicación ReactJS con el token.

    Intereting Posts